在EOF之前的任何地方都找不到字符串终止符“str”

时间:2010-10-29 07:27:46

标签: perl string syntax heredoc

为什么我会收到此错误?

use strict;
use warnings;

my $str = <<str; 
88087   23/11/2010 
35192   25/07/2010 
B3J 5X9 17/08/2011 
C8U 5L6 16/08/2011 
F4Q 3B4 17/10/2010 
D3X 9P4 11/05/2010 
O7L 6Z8 28/02/2010 
W8L 9P2 05/09/2010 
str 

print $str;

my @arr = split/\n/,$str;
foreach (@arr) {
        my @tmp = split/\t/;
        print "$tmp[1]\n";
}

3 个答案:

答案 0 :(得分:25)

你不应该有空格:

str 
   ^

heredoc终结符本身应该在一行上,不应该有任何(甚至 space )围绕它。

答案 1 :(得分:1)

或者更好地使用Eclipse Perl Integration插件或Padre来编辑perl代码。 它显示了与语法相关的实时错误。

答案 2 :(得分:1)

您可以使用diagnostics获取有关警告消息的详细帮助:

  

找不到字符串终止符“str”   在EOF之前的任何地方       (F)Perl字符串可以在多条线上伸展。这个消息意味着       关闭分隔符被省略了。因为括号内的引号   计数       嵌套级别,以下缺少其最后的括号:

    print q(The character '(' starts a side comment.);
     

<强>&GT;如果您从here-document获得此错误,则可能已包含此错误       在结束标记之前或之后看不见的空格。一个优秀的程序员       编辑器将帮助您找到这些角色。

 Uncaught exception from user code:
     

在EOF之前的任何地方找不到字符串终结符“str”