Код, который вы опубликовали, не приводит к ошибкам, которые вы утверждаете.
$ perl -e'
$line=" SUBJ/TROPICAL DEPRESSION 26W (TWENTYSIX) WARNING NR 002/"
@namearr = split /\(/, ${line);
' && echo ok
Array found where operator expected at -e line 3, near "@namearr"
(Missing semicolon on previous line?)
syntax error at -e line 3, near "@namearr "
Missing right curly or square bracket at -e line 4, at end of line
Execution of -e aborted due to compilation errors.
В коде, который вы разместили, есть три ошибки.
- Отсутствует
;
между утверждениями. ${line)
- это опечатка для ${line}
, которая должна быть $line
. ${line}
работает, но это недокументировано и необычно. - Вы не ограничивали область действия своих переменных. Всегда используйте
use strict; use warnings;
!
$ perl -e'
use strict;
use warnings;
my $line = " SUBJ/TROPICAL DEPRESSION 26W (TWENTYSIX) WARNING NR 002/";
my @namearr = split /\(/, $line;
' && echo ok
ok
Ошибка, о которой вы спрашивали, обычно возникает, когда вы пропускаете закрывающий разделитель (кавычку) или, возможно, когда ваш литералимеет неэкранированный разделитель.
$ perl -e'
my $s1 = "foo;
my $s2 = "bar";
'
Bareword found where operator expected at -e line 3, near "my $s2 = "bar"
(Might be a runaway multi-line "" string starting on line 2)
(Do you need to predeclare my?)
String found where operator expected at -e line 3, at end of line
(Missing semicolon on previous line?)
syntax error at -e line 3, near "my $s2 = "bar"
Can't find string terminator '"' anywhere before EOF at -e line 3.