2

だから、私はこのように読むファイルを持っています

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」を印刷できました。

4

2 に答える 2

1

あなたの最善の選択肢は、おそらく分割するのではなく、次のように正規表現を使用することです。

use strict;
use warnings;
use feature 'say';

while (<DATA>) {
    while (/Some.Text2?~~~(.+?)~~~/g) {
        say $1;
    }
}

__DATA__
Some.Text~~~Some big text with spaces and numbers and something~~~Some.Text2~~~Again some big test, etc~~~Text~~~Big text~~~And so on

出力:

Some big text with spaces and numbers and something
Again some big test, etc
于 2013-10-25T09:58:48.880 に答える