Can't find string terminator "str" anywhere before EOF

Why I get this error?

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

Answers


You should not have a space here:

str 
   ^

The heredoc terminator should be on a line by itself and should not have anything (not even space) surrounding it.


You can use diagnostics to get more verbose help on warning messages:

Can't find string terminator "str" anywhere before EOF (F) Perl strings can stretch over multiple lines. This message means that the closing delimiter was omitted. Because bracketed quotes count nesting levels, the following is missing its final parenthesis:

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

> If you're getting this error from a here-document, you may have included unseen whitespace before or after your closing tag. A good programmer's editor will have a way to help you find these characters.

 Uncaught exception from user code:

Can't find string terminator "str" anywhere before EOF


Or Better Use Eclipse Perl Integration plug-in or Padre for editing your perl code. It shows real-time syntax related errors.


Need Your Help

Including inline javascript using content_for in rails

javascript ruby-on-rails content-for

I am using content_for and yeild to inject javascript files into the bottom of my layout but am wondering what the best practice is for including inline javascript. Specifically I'm wondering wher...

How do I know who holds the shared_ptr<>?

c++ boost memory-leaks shared-ptr

I use boost::shared_ptr in my application in C++. The memory problem is really serious, and the application takes large amount of memory.