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 
   ^

ヒアドキュメント ターミネータは、それ自体で 1 行に配置する必要があり、それを囲むもの(スペースも含む) を含めてはなりません。

于 2010-10-29T07:30:37.183 に答える
1

または、Perlコードの編集にはEclipsePerlIntegrationプラグインまたはPadreを使用することをお勧めします。リアルタイムの構文関連のエラーが表示されます。

于 2010-10-29T09:44:13.170 に答える
1

診断を使用して、警告メッセージに関するより詳細なヘルプを取得できます。

(F) Perl 文字列は複数行にまたがることがあります。このメッセージは、終了区切り文字が省略されたことを意味します。括弧で囲まれた引用符はネスト レベルをカウントするため、次の例では最後の括弧がありません。

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

> ヒアドキュメントからこのエラーが発生した場合は、終了タグの前後に見えない空白が含まれている可能性があります。優れたプログラマーのエディターには、これらの文字を見つけるのに役立つ方法があります。

 Uncaught exception from user code:

EOF の前のどこにも文字列ターミネータ "str" が見つかりません

于 2010-10-29T16:48:13.147 に答える