我试图运行在不同服务器上打开用户目录的代码。现在,它的硬编码如下:
my $existingdir= '/home/nelly/Desktop';
有没有什么方法可以动态定义这个目录而无需对其进行硬编码,这样它适用于当前用户?
答案 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 );