私はPerl
で新しく、最初の正規表現以外のものを印刷したいと思います。 txtファイルにはshutdown
という57回含まれていますが、次のコードでは最初の一致が返されます。Perlより多くの行を印刷
#!/usr/bin/perl
use strict;
use warnings;
use Path::Tiny;
use autodie;
my $dir = path("H:/Perl");
my $file = $dir->child("test.txt");
my $content = $file->slurp_utf8();
my $file_handle = $file->openr_utf8();
(my $test) = $content =~ m/^.+$(?=\s+shutdown)/mg;{
print "$test\n";
}
私はwhile loop
を試しましたが、私はうまくいきませんでした。手伝ってくれてありがとう。
編集:ここでは は、いくつかの例のデータである:
interface port-channelxyc
description provdb002
shutdown
switchport access vlan 123
spanning-tree port type edge
interface port-channel456
description provdb002
switchport access vlan 32
spanning-tree port type edge
interface port-channel200
shutdown
私はバックだけだ: 「説明provdb002」 を、それは停止しますが、私はまた、次のいずれかを取得したい:「インタフェースポート-channel200」あなたが私の言いたいことを理解してくれることを願っています。
。 'my @ary = $ content =〜...' – zdim
いくつかのサンプルデータを提供して、希望の出力を与えることができますか?聞こえる危険性がありますが、そのファイルは確かに 'utf8'ですか、それはそれほど一般的ではないのですか?このパターンの問題は、リストを返すことですが、正しいものをキャプチャしているかどうかはわかりません。 – Sobrique
質問を編集してそこにデータを追加してください。あなたがそれをコメントに入れれば、改行がどこにあるかを知ることは不可能です。 – Borodin