一致する 2 つのパターンの間にある行を抽出する perl プログラムを作成しています。たとえば、次のテキスト ファイルには 6 行あります。ロードバランサーとエンドをマッチングさせています。間にある4行を取得したい。
**load balancer**
new
old
good
bad
**end**
私の質問は、ロード バランサーとエンドの間の行を配列に抽出する方法です。どんな助けでも大歓迎です。
一致する 2 つのパターンの間にある行を抽出する perl プログラムを作成しています。たとえば、次のテキスト ファイルには 6 行あります。ロードバランサーとエンドをマッチングさせています。間にある4行を取得したい。
**load balancer**
new
old
good
bad
**end**
私の質問は、ロード バランサーとエンドの間の行を配列に抽出する方法です。どんな助けでも大歓迎です。
フリップフロップ演算子を使用して、マーカーの間にいることを通知できます。実際のマーカーも含まれるため、データ コレクションからそれらを除外する必要があります。
複数のレコードがある場合、これによりすべてのレコードがマッシュアップされることに注意してください。その場合は、@array
何らかの方法で保存してリセットする必要があります。
use strict;
use warnings;
my @array;
while (<DATA>) {
if (/^load balancer$/ .. /^end$/) {
push @array, $_ unless /^(load balancer|end)$/;
}
}
print @array;
__DATA__
load balancer
new
old
good
bad
end
このようなファイルの場合、レコード区切り記号 ($/
または$RS
からEnglish
)を変更することがよくあります。
use English qw<$RS>;
local $RS = "\nend\n";
my $record = <$open_handle>;
あなたがchomp
それをするとき、あなたはその行を取り除きます。
chomp( $record );