【お題】NEW演歌

めぐみです。

tatsu99さま、先日は親切にアドバイス頂きまして本当にありがとうございました。
恐れ入りますまた追記で質問させて頂きたいことがありましてご連絡させて頂きました。
複雑そうなので無理そうでしたら読み飛ばしてくださいませ。
先日アドバイス頂いた出力結果にプラスして以下のデータを計算して出力させることは可能でしょうか?昭和と平成の処理です。

1.B.txtの1行目を参照します。
2.1926から1989の場合:
  下二桁マイナス25にします。
  例えば1986の場合、1986-25=61
  
  1990から1999以降の場合:
  下二桁マイナス88にします。
  例えば1996の場合、1996-88=8

  2000以降の場合:
  下三桁000を100と考えてそれにマイナス88にします。
  例えば2013の場合、136-88=25

  それ以外のデータは無視します。

3.追加の出力データ
  例えばB.txtのデータが下記のような場合
  1986
  3
  6
  以下のデータも追加出力したいです(A.txtがKATOの場合)。

kato6136
kato61
kato610306
6136kato
61kato
610306kato

610306
6136
61

以上、よろしくお願いいたします。
いつも誠意あるご回答をただ来まして本当にありがとうございます。
めぐみ

A 回答 (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);
#--------追加終了-----------------
----------------------------------------------------
追加開始~追加終了が今回の追加分です。
    • good
    • 0
この回答へのお礼

tatsu99さま

ご連絡遅れて大変申し訳ありませんでした!
完璧でした!
本当に本当にありがとうございました!
すごく助かりました。

今後ともよろしくお願いいたします。
めぐみ

お礼日時:2013/09/23 14:15

補足要求です。

前回の結果は
-------------------------
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の後ろでよいですか?
以上、補足をお願いします。
    • good
    • 0
この回答へのお礼

tatsu99さま

早速のご連絡ありがとうございます。
おっしゃるとおりの方法で問題ございません。
何とぞよろしくお願いいたします。

めぐみ

お礼日時:2013/09/20 15:12

可能です.



2 はおかしな処理だけど.
    • good
    • 0
この回答へのお礼

すみません、先ほど出力例で昭和の場合の例を出しましたが
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

平成処理になると出力結果が少しだけ多くなってしまいます。
すみません、頂いたご連絡の返信に新たに平成処理が増えてしまったようで。
恐れ入りますが何とぞよろしくお願いいたします。
めぐみ

お礼日時:2013/09/20 15:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報