访问 Windows 中的 Perl 环境 (shell) 变量 - $ENV 不工作
Access Perl environment (shell) variables in Windows - $ENV not working
问题
我在这个 SO post 中找到了如何使用 windows 环境变量(例如 %AppData%
、%HomePath%
、%SystemRoot%
等) :
这是被选为有效的正确答案的代码片段:
#!/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 post 中的代码。该代码也不起作用。使用 post 中的代码,我收到此错误:
$ 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 资源,但均无济于事。连Active State都没有答案
当您访问散列的单个项目时,您需要使用标量印记 $
而不是散列印记 %
:
perl -e 'print $ENV{APPDATA}'
问题
我在这个 SO post 中找到了如何使用 windows 环境变量(例如 %AppData%
、%HomePath%
、%SystemRoot%
等) :
这是被选为有效的正确答案的代码片段:
#!/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 post 中的代码。该代码也不起作用。使用 post 中的代码,我收到此错误:
$ 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 资源,但均无济于事。连Active State都没有答案
当您访问散列的单个项目时,您需要使用标量印记 $
而不是散列印记 %
:
perl -e 'print $ENV{APPDATA}'