Omn*_*ent 1 arrays string perl
我正在从这样的文件中读取数据
while (<$fh>)
{
@tmp = split; # <-- ?
push @AoA, [@tmp];
}
Run Code Online (Sandbox Code Playgroud)
我有几个问题.标记线有什么作用?它是否按行分割文件并将每行的元素存储到数组中?如果是这样,是否可以将@tmp转换为字符串或在@tmp上执行正则表达式?
基本上我想停止将数据推送到AoA上,如果我在文件中找到除空格或整数之外的任何内容.我已经有了正则表达式:\ ^ [\ s\d]*$ \
[ @tmp = split;]是简写:
@tmp = split " ", $_, 0;
Run Code Online (Sandbox Code Playgroud)
这类似于
@tmp = split /\s+/, $_, 0;
Run Code Online (Sandbox Code Playgroud)
但忽略任何前导空格,所以" foo bar baz"变成("foo", "bar", "baz")而不是("", "foo", "bar", "baz").
它$fh使用文件处理程序中的每一行并将其拆分,使用空格作为分隔符.
关于你想做什么,为什么不$_开始运行正则表达式?那是一个字符串.
你可以这样做:
while (<$fh>) {
last unless /^[\s\d]*$/; # break if a line containing something
# other than whitespace or a number is found
@tmp = split;
push @AoA, [@tmp];
}
Run Code Online (Sandbox Code Playgroud)