10

为什么我会收到此错误?

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";
}
4

3 回答 3

25

你不应该在这里有空格:

str 
   ^

heredoc 终止符应该单独一行,并且不应该有任何东西(甚至是space)围绕它。

于 2010-10-29T07:30:37.183 回答
1

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

于 2010-10-29T09:44:13.170 回答
1

您可以使用诊断来获取有关警告消息的更详细的帮助:

在 EOF (F) Perl 字符串可以跨越多行之前,在任何地方都找不到字符串终止符“str”。此消息表示省略了结束分隔符。因为括号内的引号计算嵌套级别,所以以下内容缺少最后的括号:

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

> 如果您从此处的文档中收到此错误,则您可能在结束标记之前或之后包含了看不见的空格。一个好的程序员的编辑器会有办法帮助你找到这些字符。

 Uncaught exception from user code:

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

于 2010-10-29T16:48:13.147 回答