• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Perlでの文字列処理について)

Perlでの文字列処理について

このQ&Aのポイント
  • Perlを使用して、特定の形式のテキストファイルを別の形式に変換する方法について質問です。
  • 具体的には、FILE_A.txtというファイルから「!」マークで区切られた部分の下の行の文字列をIPアドレスの右横に移動して、新しいファイルFILE_B.txtに出力する方法を知りたいです。
  • また、nameという文字列は共通です。Perlの処理方法について教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • kumoz
  • ベストアンサー率64% (120/185)
回答No.1

入力ファイルの構造に乱れがなければ、次のプログラムで処理できると思います。 use strict; open IN, "FILE_A.txt" or die "Can't open FILE_A.txt: $!"; open OUT, ">FILE_B.txt" or die "Can't open FILE_B.txt: $!"; my $name; while (my $line = <IN>) { if (substr($line, 0, 1) eq '!') { $name = ''; } elsif ($name eq '') { $name = (split /\s+/, $line)[1]; } else { $line =~ s/$/ $name/; print OUT $line; } } close IN; close OUT;

mitsuaco666
質問者

お礼

この度はご回答ありがとうございます。 早期にご回答頂き、またこちらが意図していたファイルの入出力まで 書いて頂いておりましたので、ベストアンサーにさせて頂きました。 本当にありがとうございました。

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

書いてある条件を素直に読めば use strict; my $name; while (<>) { chomp; if (/^!/) { last unless defined ($_ = <>); chomp; /^name\s+(\S+)/ or die; $name = $1; } else { print "$_ $name\n"; } } くらい? あ, chomp は癖で書いてるだけです.

mitsuaco666
質問者

お礼

この度はご回答頂きましてありがとうございます。 Tacosan様が書いて頂いた方法でも、今回の処理ができるということで 勉強になりました。 本当にありがとうございました。