我在SO帖子中找到了如何使用Windows环境变量(例如%AppData%
,%HomePath%
,%SystemRoot%
等):
Getting the path of %AppData% in perl script
以下是选择作为正确答案的代码段:
#!/usr/bin/perl
use warnings;
use strict;
my $localConfPath = $ENV{localappdata};
my $appdata = $ENV{appdata};
print $localConfPath; #will print the app path - C:\users\xxx\AppData\local
print $appdata; #prints - C:\users\xxx\AppData\Roaming
但是,出于某种原因,我的代码无法在我的机器上运行。我的脚本在没有shebang(#!)行的情况下工作,所以无论是否使用它都尝试了脚本,但无济于事。
我使用GitBash附带的Perl,如果这有所不同。
我尝试了一个简单的Perl命令行执行:
perl -e 'print %ENV{AppData}';
这没有用。我也尝试了以下替代方案:
perl -e 'print %ENV{APPDATA}';
perl -e 'print %ENV{appdata}';
这也没有用。这是我得到的错误(所有3个版本都一样):
syntax error at -e line 1, near "%ENV{AppData"
Execution of -e aborted due to compilation errors.
我甚至尝试使用我在其自己的文件中提到的SO帖子中的代码。那段代码也不起作用。使用帖子中的代码我收到此错误:
$ perl /c/Users/User1/Desktop/ehCode_testingWindowsEnvironmentVariables_01.pl
Use of uninitialized value in print at /c/Users/User1/Desktop/ehCode_testingWindowsEnvironmentVariables_01.pl line 7.
Use of uninitialized value in print at /c/Users/User1/Desktop/ehCode_testingWindowsEnvironmentVariables_01.pl line 8.
有问题的行是:
print $localConfPath; #will print the app path - C:\users\xxx\AppData\local
print $appdata; #prints - C:\users\xxx\AppData\Roaming
我不明白为什么他们不应该工作。
我已经检查过Perl Monks,Perl Maven,Stack Overflow和其他流行的Perl资源,但无济于事。即使是活跃状态也没有答案。
答案 0 :(得分:2)
当您访问散列的各个项目时,您需要使用标量符号$
而不是散列符号%
:
perl -e 'print $ENV{APPDATA}'