string - 在perl的括号中分割一行
问题描述
我有这个字符串,我想在左括号处拆分。
SUBJ/TROPICAL DEPRESSION 26W (TWENTYSIX) WARNING NR 002/
在这种情况下,我将有两个字符串
SUBJ/TROPICAL DEPRESSION 26W
和
TWENTYSIX) WARNING NR 002/
我试图使用 split 功能来做这件事
$line=" SUBJ/TROPICAL DEPRESSION 26W (TWENTYSIX) WARNING NR 002/"
@namearr = split /\(/, ${line);
但我最终收到一条错误消息。
(Might be a runaway multi-line "" string starting on line )
如何调整上面的代码,以便可以根据括号成功拆分行?
解决方案
您发布的代码不会导致您声称的错误。
$ 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.
推荐阅读
- javascript - 动态更新 PayPal 按钮/iframe 上的“金额”?
- c - 在 C 中,是否可以在不移动缓冲区指针的情况下从 getchar 的当前缓冲区位置读取字符?
- angularjs - ng-src 不适用于 angularjs 中的视频标签
- scala - 遍历scala中的日期范围
- vue.js - 多个字段和值的 Vue 搜索过滤器
- typescript - 自我实例的类型
- hadoop - Zeppelin:猪脚本问题
- python-3.x - 没有分隔符时,如何在 Python 中将 .txt 文件读取为 n 维 numpy 数组?
- java - Hibernate - 具有接口属性的实体类
- amazon-web-services - 从临时凭证正确生成 AWS auth 标头