0

私は Perl を初めて使用するので、質問を手伝ってもらえないかと思っていました。

テキスト ファイルから <> 括弧内のテキストと数字の正確なシーケンスを取得しようとしています。

コードは次のとおりです。

open (FILE1, "file.txt") or die ("Error: File cannot be found"); 
@file1 = <FILE1>; 
@file2 = join(' ', @file1); 
my @grabJustTheHVSection = grep { $_ =~ /\<HV\>.*\<\\HV\>/s} @file2; 
close(FILE); 

配列 @grabJustTheHVSection に、file1.txt の次のものだけを含めたい
:

その他のサンプル コード:

@file2  = join('', @file1); 
my @replace = grep { $_ =~ /\<HV>/g } @file2;
foreach $_ (@replace){
    if($_ !~ m/.PDT>/g){
    s /<HV>/<PDT>/g;
    s /<\\HV>/<\\PDT>/g;
    (print NEW $_) or die "Cant write to $new: $!";
    }

ありがとう

4

1 に答える 1

0

これが何らかのマークアップ言語である場合は、代わりにパーサーを使用する必要があります。の「逆」のバックスラッシュ<\HV>は何か別のものを示しているようですが、おそらくそれはタイプミスですか?

とにかく、フリップフロップ演算子を使用できます。要点は、条件の間でフリップフロップが true を返し、それ以外の場合は false を返すことです。

use strict;
use warnings;
use Data::Dumper;

chomp(my @file = <DATA>);

my @HV = grep /<HV>/ .. /<\\HV>/, @file;
print Dumper \@HV;

__DATA__
foo
<HV>
00000000 00000010 00000100 00001000 00000000 00100000
00000000 00000010 00000100 00001000 00000000 00100000
<\HV>
bar

出力:

$VAR1 = [
          '<HV>',
          '00000000 00000010 00000100 00001000 00000000 00100000',
          '00000000 00000010 00000100 00001000 00000000 00100000',
          '<\\HV>'
        ];
于 2013-03-11T14:36:48.070 に答える