📄 unix.pm
字号:
package File::HomeDir::Unix;# Unix-specific functionalityuse 5.005;use strict;use Carp ();use vars qw{$VERSION};BEGIN { $VERSION = '0.66';}###################################################################### Current User Methodssub my_home { my $class = shift; my $home = $class->_my_home(@_); # On Unix in general, a non-existant home means "no home" # For example, "nobody"-like users might use /nonexistant if ( defined $home and ! -d $home ) { $home = undef; } return $home;}sub _my_home { my $class = shift; if ( exists $ENV{HOME} and defined $ENV{HOME} ) { return $ENV{HOME}; } # This is from the original code, but I'm guessing # it means "login directory" and exists on some Unixes. if ( exists $ENV{LOGDIR} and $ENV{LOGDIR} ) { return $ENV{LOGDIR}; } ### More-desperate methods # Light desperation on any (Unixish) platform SCOPE: { my $home = (getpwuid($<))[7]; return $home if $home and -d $home; } return undef;}# On unix by default, everything is under the same foldersub my_desktop { shift->my_home;}sub my_documents { shift->my_home;}sub my_data { shift->my_home;}sub my_music { shift->my_home;}sub my_pictures { shift->my_home;}sub my_videos { shift->my_home;}###################################################################### General User Methodssub users_home { my ($class, $name) = @_; # IF and only if we have getpwuid support, and the # name of the user is our own, shortcut to my_home. # This is needed to handle HOME environment settings. if ( $name eq getpwuid($<) ) { return $class->my_home; } SCOPE: { my $home = (getpwnam($name))[7]; return $home if $home and -d $home; } return undef;}sub users_desktop { shift->users_home(@_);}sub users_documents { shift->users_home(@_);}sub users_data { shift->users_home(@_);}sub users_music { shift->users_home(@_);}sub users_pictures { shift->users_home(@_);}sub users_videos { shift->users_home(@_);}1;=pod=head1 NAMEFile::HomeDir::Unix - find your home and other directories, on Unix=head1 DESCRIPTIONThis module provides implementations for determining common userdirectories. In normal usage this module will always beused via L<File::HomeDir>.=head1 SYNOPSIS use File::HomeDir; # Find directories for the current user $home = File::HomeDir->my_home; # /home/mylogin $desktop = File::HomeDir->my_desktop; # .. all of these will default to home directory at the moment .. $docs = File::HomeDir->my_documents; # $music = File::HomeDir->my_music; # $pics = File::HomeDir->my_pictures; # $videos = File::HomeDir->my_videos; # $data = File::HomeDir->my_data; # =head1 TODO=over 4=item * Add support for common unix desktop and data directories when using KDE / Gnome / ...=back
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -