File::HomeDir - Heimatverzeichnis und dazugehörige Verzeichnisse ermitteln

Veröffentlicht von Thomas Fahle am (Permalink)

Jedem Nutzer eines Computers wird eine eigene zentrale Datenablage, sein Heimatverzeichnis, zugewiesen.

Unterhalb des Heimatverzeichnisse werden zusätzlich noch weitere Verzeichnisse für bestimmte Daten, z.B. Bilder oder Musik, angelegt.

File::HomeDir

File::HomeDir von Adam Kennedy bietet eine betriebssystemunabhängige Möglichkeit das Heimatverzeichnis und die dazugehörigen Spezialordner zu ermitteln.

Die niedrige Versionsnummer (0.80) deutet es schon an: File::HomeDir ist noch nicht ganz ausgereift. Für einige typische, eher einfache Fälle kann es jedoch schon eingesetzt werden.

Beispiel (Aktueller User)

#!/usr/bin/perl
use strict;
use warnings;
use File::HomeDir;

# Aktueller User
my $home    = File::HomeDir->my_home;
my $desktop = File::HomeDir->my_desktop;
my $docs    = File::HomeDir->my_documents;
my $music   = File::HomeDir->my_music;
my $pics    = File::HomeDir->my_pictures;
my $videos  = File::HomeDir->my_videos;
my $data    = File::HomeDir->my_data;


print "Home:    $home    \n" if $home;
print "Desktop: $desktop \n" if $desktop;
print "Docs:    $docs    \n" if $docs;
print "Music:   $music   \n" if $music;
print "Bilder:  $pics    \n" if $pics;
print "Videos:  $videos  \n" if $videos;
print "Daten:   $data    \n" if $data;

Ausgabe unter Linux:

Home:    /home/tf    
Desktop: /home/tf 
Docs:    /home/tf    
Music:   /home/tf   
Bilder:  /home/tf    
Videos:  /home/tf  
Daten:   /home/tf

Ausgabe unter Windows:

Home:    C:\Dokumente und Einstellungen\tf
Desktop: C:\Dokumente und Einstellungen\tf\Desktop
Docs:    C:\Dokumente und Einstellungen\tf\Eigene Dateien
Music:   C:\Dokumente und Einstellungen\tf\Eigene Dateien\Eigene Musik
Bilder:  C:\Dokumente und Einstellungen\tf\Eigene Dateien\Eigene Bilder
Videos:  C:\Dokumente und Einstellungen\tf\Eigene Dateien\Eigene Videos
Daten:   C:\Dokumente und Einstellungen\tf\Lokale Einstellungen\Anwendungsdaten

Beispiel (Anderer User)

Dieses Beispiel funktioniert unter Windows leider noch nicht.

#!/usr/bin/perl
use strict;
use warnings;
use File::HomeDir;

# Anderer User
my $user = 'root';
my $home    = File::HomeDir->users_home("$user");
my $desktop = File::HomeDir->users_desktop("$user");
my $docs    = File::HomeDir->users_documents("$user");
my $music   = File::HomeDir->users_music("$user");
my $pics    = File::HomeDir->users_pictures("$user");
my $videos  = File::HomeDir->users_videos("$user");
my $data    = File::HomeDir->users_data("$user");


print "Home:    $home    \n" if $home;
print "Desktop: $desktop \n" if $desktop;
print "Docs:    $docs    \n" if $docs;
print "Music:   $music   \n" if $music;
print "Bilder:  $pics    \n" if $pics;
print "Videos:  $videos  \n" if $videos;
print "Daten:   $data    \n" if $data;

ActiveState Perl

ActiveState liefert File::HomeDir in der Version 0.69 aus. Aktuell ist Version 0.80.Daher sollte File::HomeDir besser per CPAN-Shell installiert werden und nicht per ppm.

C:\>perl -MCPAN -e shell
cpan> install File::HomeDir

Gnome, KDE und andere Desktops für Linux

Diverse Desktops für Linux legen, ähnlich wie Windows, spezielle Ordner für bestimmte Daten an. File::HomeDir findet diese Ordner in der Version 0.80 nicht. Das steht noch auf der Todo-Liste.

Weitere Posts