http://www.perlmonks.org?node_id=978637


in reply to Re: Comparing arrays
in thread Comparing arrays

Can it?

use strict; use warnings; my @words1 = <INPUT1> my @words2 = <INPUT2> __END__ syntax error at G:\x.pl line 5, near "my " Global symbol "@words2" requires explicit package name at G:\x.pl line + 5. Execution of G:\x.pl aborted due to compilation errors.

It's not even complaining about trying to read from unopened filehandles, because the error occurs at compile time - even before perl realizes that the read operation would fail. The solution is obvious - you forgot a semicolon. But even then, will it hold?

use strict; use warnings; open INPUT1, "<", "x.pl"; my @words1 = <INPUT1>; print "<$_>\n" for @words1; __END__ <use strict; > <use warnings; > < > <open INPUT1, "<", "x.pl"; > <my @words1 = <INPUT1>; > <print "<$_>\n" for @words1;>

That doesn't look right. And no wonder - your replacement doesn't do the chomping as it happens in OP's code.

Surely you meant

my @words1 = map {chomp; $_} <INPUT1>; my @words2 = map {chomp; $_} <INPUT2>;