perl - 在 Perl 中从文件中分割字符串

标签 perl split

所以,我有一个像这样读取的文件

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/

相关文章:

java - 如何避免在括号中用逗号拆分?

r - 将数值向量拆分为不相等的部分,然后将自定义函数应用于每个部分

python - 如何用括号外的逗号分割字符串?

Perl One-liner if else逻辑

perl - 从 Getopt::Long 操作 GetOptions 中的标志类型

arrays - 取消引用日期

perl - 如何将完整路径分成目录和文件名?

string - 对字符向量的 strsplit 进行 sapply 的替代方法

r - 拆分字符串并仅保留一个特定部分

perl - 如何从 Perl 数组中删除重复项?