所以,我有一个像这样读取的文件
Some.Text~~~Some big text with spaces and numbers and something~~~Some.Text2~~~Again some big test, etc~~~Text~~~Big text~~~And so on
我想要的是,如果 $x 与 Some.Text 匹配,例如,如何获得带有“带有空格、数字和某些内容的大文本”的变量,或者如果它与“Some.Text2”匹配以获得“再次”一些大测试等”。
open FILE, "<cats.txt" or die $!;
while (<FILE>) {
chomp;
my @values = split('~~~', $_);
foreach my $val (@values) {
print "$val\n" if ($val eq $x)
}
exit 0;
}
close FILE;
从现在起我不知道该怎么办了。我刚刚设法打印“Some.text”(如果它与我的变量匹配)。
最佳答案
splice
可用于成对地从 @values
中删除元素:
while(my ($matcher, $printer) = splice(@values, 0, 2)) {
print $printer if $matcher eq $x;
}
或者,如果您需要保持 @values
不变,您可以使用 C 风格循环:
for (my $i=0; $i<@values; $i+=2) {
print $values[$i+1] if $values[$i] eq $x;
}
关于perl - 在 Perl 中从文件中分割字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19585387/