- ベストアンサー
Perlで2つのテキストファイルの処理する方法2
- Perlで2つのテキストファイルを処理する方法について解説します。
- 具体的な処理内容として、以下のデータの計算方法を紹介します。
- また、追加の出力データについても説明します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
以下のようにしてください。 ---------------------------------------- $file_a = shift(@ARGV); $file_b = shift(@ARGV); open FHA,$file_a or die("can't open $file_a"); @data_a = (); while($line=<FHA>){ chomp($line); push @data_a,$line } close FHA; open FHB,$file_b or die("can't open $file_b"); @data_b = (); while($line=<FHB>){ chomp($line); push @data_b,$line } close FHB; #------------------追加開始--------- # 西暦を和暦に変換(昭和と平成のみ) $wanen = $data_b[0]; if ($wanen >= 1926 && $wanen <= 1989){ $wanen -= 1925; }elsif ($wanen >=1990){ $wanen -= 1988; } #------------------追加終了--------- foreach $da (@data_a){ printf("%s%d%d%d\n",$da,$data_b[0],$data_b[1],$data_b[2]); printf("%s%d\n",$da,$data_b[0]); printf("%s%d%d\n",$da,$data_b[1],$data_b[2]); printf("%s\n",$da); printf("%s%04d%02d%02d\n",$da,$data_b[0],$data_b[1],$data_b[2]); printf("%s%02d%02d\n", $da,$data_b[1],$data_b[2]); printf("%d%d%d%s\n",$data_b[0],$data_b[1],$data_b[2],$da); printf("%d%s\n",$data_b[0],$da); printf("%d%d%s\n",$data_b[1],$data_b[2],$da); printf("%s\n",$da); printf("%04d%02d%02d%s\n",$data_b[0],$data_b[1],$data_b[2],$da); printf("%02d%02d%s\n",$data_b[1],$data_b[2],$da); #------------------追加開始--------- printf("%s%d%d%d\n",$da,$wanen,$data_b[1],$data_b[2]); printf("%s%d\n",$da,$wanen); printf("%s%02d%02d%02d\n",$da,$wanen,$data_b[1],$data_b[2]); printf("%d%d%d%s\n",$wanen,$data_b[1],$data_b[2],$da); printf("%d%s\n",$wanen,$da); printf("%02d%02d%02d%s\n",$wanen,$data_b[1],$data_b[2],$da); #------------------追加終了--------- } printf("%d%d%d\n",$data_b[0],$data_b[1],$data_b[2]); printf("%d\n",$data_b[0]); printf("%d%d\n",$data_b[1],$data_b[2]); printf("%04d%02d%02d\n",$data_b[0],$data_b[1],$data_b[2]); printf("%02d%02d\n",$data_b[1],$data_b[2]); printf("%s%s\n",$data_a[0],$data_a[1]); printf("%s%s\n",$data_a[1],$data_a[2]); printf("%s%s\n",$data_a[2],$data_a[0]); printf("%s%s\n",$data_a[1],$data_a[0]); printf("%s%s\n",$data_a[0],$data_a[2]); printf("%s%s\n",$data_a[2],$data_a[1]); #--------追加開始----------------- printf("%02d%02d%02d\n",$wanen,$data_b[1],$data_b[2]); printf("%d%d%d\n",$wanen,$data_b[1],$data_b[2]); printf("%d\n",$wanen); #--------追加終了----------------- ---------------------------------------------------- 追加開始~追加終了が今回の追加分です。
その他の回答 (2)
- tatsu99
- ベストアンサー率52% (391/751)
補足要求です。前回の結果は ------------------------- kato198636 kato1986 kato36 kato kato19860306 kato0306 198636kato 1986kato 36kato kato 19860306kato 0306kato ・・・・・・・A megumi198636 megumi1986 megumi36 megumi megumi19860306 megumi0306 198636megumi 1986megumi 36megumi megumi 19860306megumi 0306megumi・・・・・・・・B meguchan198636 meguchan1986 meguchan36 meguchan meguchan19860306 meguchan0306 198636meguchan 1986meguchan 36meguchan meguchan 19860306meguchan 0306meguchan・・・・・・・C 198636 1986 36 19860306 0306・・・・・・・・・・・D katomegumi megumimeguchan meguchankato megumikato katomeguchan meguchanmegumi --------------------------------- ですが、 kato6136 kato61 kato610306 6136kato 61kato 610306kato は、A.TXTの内容を含むので、繰り返しになります。 ・・・・Aの後ろに追加でよいですか? 同様に、megumi6136の分は・・・・・Bの後に追加になります。 610306 6136 61 の追加は、・・・・・Dの後ろでよいですか? 以上、補足をお願いします。
お礼
tatsu99さま 早速のご連絡ありがとうございます。 おっしゃるとおりの方法で問題ございません。 何とぞよろしくお願いいたします。 めぐみ
- Tacosan
- ベストアンサー率23% (3656/15482)
可能です. 2 はおかしな処理だけど.
お礼
すみません、先ほど出力例で昭和の場合の例を出しましたが 1996の場合、平成ですので下記のようにしたいです(平成処理)。 3.追加の出力データ 例えばB.txtのデータが下記のような場合 1996 3 6 以下のデータも追加出力したいです(A.txtがKATOの場合)。 1996が8と08になります。 kato836 kato0836 kato8 kato08 kato80306 kato080306 836kato 0836kato 8kato 08kato 80306kato 080306kato 08kato 80306 080306 836 8 平成処理になると出力結果が少しだけ多くなってしまいます。 すみません、頂いたご連絡の返信に新たに平成処理が増えてしまったようで。 恐れ入りますが何とぞよろしくお願いいたします。 めぐみ
お礼
tatsu99さま ご連絡遅れて大変申し訳ありませんでした! 完璧でした! 本当に本当にありがとうございました! すごく助かりました。 今後ともよろしくお願いいたします。 めぐみ