如何动态引用用户特定的目录?

时间:2014-07-17 11:32:40

标签: perl

我试图运行在不同服务器上打开用户目录的代码。现在,它的硬编码如下:

my $existingdir= '/home/nelly/Desktop';

有没有什么方法可以动态定义这个目录而无需对其进行硬编码,这样它适用于当前用户?

5 个答案:

答案 0 :(得分:1)

File::HomeDir是一个跨平台模块,可用于在当前计算机上获取特定于用户的路径。

use File::HomeDir;

# Modern Interface (Current User)
$home     = File::HomeDir->my_home;
$desktop  = File::HomeDir->my_desktop;
$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;
$dist     = File::HomeDir->my_dist_data('File-HomeDir');
$dist     = File::HomeDir->my_dist_config('File-HomeDir');

# Modern Interface (Other Users)
$home    = File::HomeDir->users_home('foo');
$desktop = File::HomeDir->users_desktop('foo');
$docs    = File::HomeDir->users_documents('foo');
$music   = File::HomeDir->users_music('foo');
$pics    = File::HomeDir->users_pictures('foo');
$video   = File::HomeDir->users_videos('foo');
$data    = File::HomeDir->users_data('foo');

答案 1 :(得分:0)

听起来你在问如何找到当前用户的桌面,你可以这样做:

my $desktop = "$ENV{HOMEDRIVE}\\$ENV{HOMEPATH}\\Desktop";

答案 2 :(得分:0)

如果您想获得Unix用户的主路径,可以使用$ENV哈希。

my $existingdir = "$ENV{HOME}/Desktop;"

答案 3 :(得分:-1)

是的,您可以删除硬编码。将目录路径存储在应用程序或软件目录中的config.txt文件中。

如果更改目录,您可以重写该文件。

如果你知道ini文件,那就更好了。您也可以在ini文件中存储其他选项。

我使用ini来存储用户数据,例如启动最小化,皮肤设置,用户信息等。

答案 4 :(得分:-1)

%ENV哈希是一个内置变量,它保存环境设置,如主目录$ ENV {HOME}。使用Data :: Dumper模块查看脚本中包含的内容。

use Data::Dumper;
print Dumper( %ENV );