我正在看一些使用File::Path创建和删除文件路径的示例代码。
http://perldoc.perl.org/File/Path.html
我可以使这些功能正常运行,但是在使错误消息正确运行方面有些困难。在捕获错误消息的示例中,他们在\
之前使用my
。这个\
的目的是什么?
# Sample code from the link above
remove_tree( 'foo/bar', 'bar/rat', {error => \my $err} ); # why escape the my?!?!
if (@$err) {
for my $diag (@$err) {
my ($file, $message) = %$diag;
if ($file eq '') {
print "general error: $message\n";
}
else {
print "problem unlinking $file: $message\n";
}
}
}
else {
print "No error encountered\n";
}
我以前从未见过,也无法在任何地方找到解释。我尝试删除
\
,但收到语法错误,因此很明显这是必需的,但是为什么呢? 最佳答案
不,在Perl中my
的优先级高于\
,因此my $err
应用于的是整个表达式\
。 \
本身并不是真正的逃脱;引用http://perldoc.perl.org/perlref.html#Making-References:
引用可以通过多种方式创建。
例如:
my $scalarref = \$foo;
使$scalarref
成为对现有标量变量$foo
的引用。相比之下,my $scalarref = \my $foo;
创建一个新的标量变量$foo
并使$scalarref
对其进行引用,这样可以使其更紧凑。关于perl - Perl“\my $ var”为什么“my”以反斜杠转义?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27365918/