混淆perl中的字符串终止符

时间:2013-02-12 21:47:04

标签: perl terminator

在此处阅读有关收到错误消息的几个帖子 - 在EOF之前的任何地方都找不到字符串终结符... 在EOF之前的任何地方都找不到字符串终止符“'”

不要以为我真的理解它,虽然带回家的消息不是使用单引号。 好吧,我会尽量不使用单引号。但是,如果可能的话,有人可以帮我理解两个脚本之间的差异,就Perl如何看待它们而言

#!/usr/bin/perl -w
#backwhacking
print "c:\\WINNT\\Profiles\\\n";
print 'c:\WINNT\Profiles\ ', "\n";

#!/usr/bin/perl -w
#backwhacking
print "c:\\WINNT\\Profiles\\\n";
print 'c:\WINNT\Profiles\', "\n"; 

第一个脚本与输出

运行良好
c:\WINNT\Profiles
c:\WINNT\Profiles

而第二个脚本给了我相同的错误代码,关于无法找到脚本终结符“'”

有没有“理由”为什么perl编程需要区分是否有单引号的空格?对不起,但对于非comp sci人来说似乎有些微不足道。

1 个答案:

答案 0 :(得分:3)

'样式引号使用反斜杠来转义'character。

所以:print '\'';将打印'character,而不是\'字符串。

当你打印'不管'时 - 它会打印>无论什么< - 最后有空间。但如果你这样做:

print 'whatever \'

这不是终止字符串,因为反斜杠转义'。因此,以下, "\n";被视为''字符串的一部分。