我正在尝试在 Perl 中连接此字符串:“/.hush_profile”;
当我在字符串中添加“/”时,我一直遇到问题。我试过逃避它,但这也行不通。
这是我的问题代码行:
#!/usr/bin/perl -w
use strict;
my($fileloc, $home_dir);
$home_dir = $ENV{"HOME"};
$fileloc = $home_dir;
$fileloc .= "/.hush_profile";
我正在尝试在 Perl 中连接此字符串:“/.hush_profile”;
当我在字符串中添加“/”时,我一直遇到问题。我试过逃避它,但这也行不通。
这是我的问题代码行:
#!/usr/bin/perl -w
use strict;
my($fileloc, $home_dir);
$home_dir = $ENV{"HOME"};
$fileloc = $home_dir;
$fileloc .= "/.hush_profile";
您的代码的这种改编给了我预期的输出:
#!/usr/bin/perl -w
use strict;
my($fileloc);
my $home_dir = $ENV{"HOME"};
print "home_dir = $home_dir\n";
$fileloc = $home_dir;
print "fileloc 1 = $fileloc\n";
$fileloc .= "/.hush_profile";
print "fileloc 2 = $fileloc\n";
输出:
home_dir = /work4/jleffler
fileloc 1 = /work4/jleffler
fileloc 2 = /work4/jleffler/.hush_profile
即使我$HOME
在环境中未设置,我也会得到一些东西:
$ (unset HOME; perl x.pl)
Use of uninitialized value $home_dir in concatenation (.) or string at x.pl line 6.
home_dir =
Use of uninitialized value $fileloc in concatenation (.) or string at x.pl line 8.
fileloc 1 =
fileloc 2 = /.hush_profile
$
这恰好是 RHEL 5 (x86/64) 上的 Perl 5.12.1,但我在同一平台上使用 Perl 5.8.8 得到了相同的结果。