【发布时间】:2014-08-14 07:50:58
【问题描述】:
我不明白“我的”关键字在这里是如何工作的。这是我的 perl 脚本。
$line = ' sdfaad(asdvfr)';
代码1:
if ($tmp = $line =~ /(\(\s*[^)]+\))/ ) {
print $tmp;
}
输出:
1
代码2:
if (my ($tmp) = $line =~ /(\(\s*[^)]+\))/ ) {
print $tmp;
}
输出:
(asdvfr)
为什么两个输出不同?和my的使用有关系吗?
【问题讨论】:
-
请注意
printf $tmp;没有意义。你想要printf "%s", $tmp;或print $tmp; -
是的!刚刚在网上查了下区别。谢谢。但是两者的最终结果是一样的吗?我找不到 printf 和 print 后跟一个参数之间的任何区别。
-
某些字符在格式字符串中是特殊的(
printf的第一个参数)。您已经在没有意识到的情况下看到了差异。试试my $tmp = '%s';。 -
有所不同。感谢澄清
标签: perl scripting pattern-matching output string-matching