获得相同的打印行为<

时间:2013-10-19 17:21:40

标签: perl printf stdout

我试过这个例子:

#!C:/Perl64/bin/perl.exe

$mickey = "Hi i'm Mickey";
$pluto = "Hi i'm Pluto";

print <<EOF;
$pluto
Hi i'm Goofy
$mickey
EOF

print <<'EOF';
$pluto
Hi i'm Goofy
$mickey
EOF

获得以下输出:

Hi i'm Pluto
Hi i'm Goofy
Hi i'm Mickey

$pluto
Hi i'm Goofy
$mickey

我想使用<< operator使用whitout获得相同的行为。所以我尝试了另外一个:

#!C:/Perl64/bin/perl.exe

$mickey = "Hi i'm Mickey";
$pluto = "Hi i'm Pluto";

print STDOUT "$pluto
Hi i'm Goofy
$mickey";

实际打印:

Hi i'm Pluto
Hi i'm Goofy
Hi i'm Mickey

如何逃脱每个perl特殊字符?

我尝试使用print 'STDOUT' ...而不是我想要的东西。

3 个答案:

答案 0 :(得分:3)

如果您不希望插值发生,请使用单引号(或q/STRING/ quote operator)而不是双引号:

$mickey = "Hi I'm Mickey";
$pluto = "Hi I'm Pluto";

print STDOUT q{$pluto
Hi I'm Goofy
$mickey};

STDOUT在这里也是多余的,这是默认值。 print 'foo $bar';就足够了。

答案 1 :(得分:2)

print <<"EOF";   # <<EOF is short for <<"EOF"
$pluto
Hi i'm Goofy
$mickey
EOF

print <<'EOF';
$pluto
Hi i'm Goofy
$mickey
EOF

相当于

print
"$pluto
Hi i'm Goofy
$mickey
";

print
'$pluto
Hi i\'m Goofy
$mickey
';

注意所用引号之间的平行。

不幸的是,因为分隔符存在于文字中,所以必须将其转义。

答案 2 :(得分:0)

  

如何逃脱每个perl特殊字符?

使用“\”来做到这一点

my $var = "test";

print "\$var\n";
print "$var\n";

输出:

$var
test