哈希引用中的 Perl 反引号给出不同的结果
Perl backticks in hash ref giving different results
我有一个名为 a.gz 的文件,它是一个 gzip 文件,解压缩后包含以下行:
a
b
下面是两个 perl 代码块,我认为 "should" 给出了相同的结果,但它们没有。
代码#1:
use Data::Dumper;
my $s = {
status => 'ok',
msg => `zcat a.gz`
};
print Dumper($s),"\n";
代码#2:
use Data::Dumper;
my $content = `zcat a.gz`;
my $s = {
status => 'ok',
msg => $content
};
print Dumper($s), "\n";
代码 #1 给出以下结果:
Odd number of elements in anonymous hash at ./x.pl line 8.
$VAR1 = {
'msg' => 'a
',
'b
' => undef,
'status' => 'ok'
};
代码 #2 returns 结果如下:
$VAR1 = {
'msg' => 'a
b
',
'status' => 'ok'
};
我在 Linux
中使用 perl 5.10.1 运行
In scalar context, it comes back as a single (potentially multi-line) string, or undef
if the command failed. In list context, returns a list of lines (however you've defined lines with $/
or $INPUT_RECORD_SEPARATOR
), or an empty list if the command failed.
分配给标量将 ``
置于标量上下文中;在 { ... }
中使用它会将其置于列表上下文中。
{ LIST }
接受一个列表并解释其内容在键和值之间交替,即 key1, value1, key2, value2, key3, value3, ...
。如果元素个数为奇数,则会收到警告(并且缺失值被视为undef
)。
LIST , LIST
(列表上下文中的逗号运算符)连接两个列表。
=>
的工作方式与 ,
类似,但会自动在其左侧引用标识符(如果有的话)。
我有一个名为 a.gz 的文件,它是一个 gzip 文件,解压缩后包含以下行:
a
b
下面是两个 perl 代码块,我认为 "should" 给出了相同的结果,但它们没有。
代码#1:
use Data::Dumper;
my $s = {
status => 'ok',
msg => `zcat a.gz`
};
print Dumper($s),"\n";
代码#2:
use Data::Dumper;
my $content = `zcat a.gz`;
my $s = {
status => 'ok',
msg => $content
};
print Dumper($s), "\n";
代码 #1 给出以下结果:
Odd number of elements in anonymous hash at ./x.pl line 8.
$VAR1 = {
'msg' => 'a
',
'b
' => undef,
'status' => 'ok'
};
代码 #2 returns 结果如下:
$VAR1 = {
'msg' => 'a
b
',
'status' => 'ok'
};
我在 Linux
中使用 perl 5.10.1 运行In scalar context, it comes back as a single (potentially multi-line) string, or
undef
if the command failed. In list context, returns a list of lines (however you've defined lines with$/
or$INPUT_RECORD_SEPARATOR
), or an empty list if the command failed.
分配给标量将 ``
置于标量上下文中;在 { ... }
中使用它会将其置于列表上下文中。
{ LIST }
接受一个列表并解释其内容在键和值之间交替,即 key1, value1, key2, value2, key3, value3, ...
。如果元素个数为奇数,则会收到警告(并且缺失值被视为undef
)。
LIST , LIST
(列表上下文中的逗号运算符)连接两个列表。
=>
的工作方式与 ,
类似,但会自动在其左侧引用标识符(如果有的话)。