• ベストアンサー

テキスト置換

Perlでスクリプトの変換をしたいのですが、どうにも改行(いろいろ)などが分かりません。 サンプルスクリプトのご教授を、どうぞ、お願いいたします。 具体的には (1) ^music,rei_bgm0001を mp3loop "bgm\rei_0001.mp3"に (bgm0001は~0067まであるので一括変換したいです.) (2) ^chara,ううう,えええ,いいいa,long,center,あああ を ld c,":a;mp\ううう_えええ_いいいa.あああ.jpg",long,center, に置換したいです. 【^chara,ううう,えええ,いいいa,long,center,あああ、なのですがlong,center,を上のように置換後、最後に持っていきたいです.】 (3) //の入った行だけを全て削除する。です。 解りにくいかと思いますが宜しくお願いします.

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

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

結局丸投げじゃん。 use strict; use warnings; my @charas; while (my $line = <DATA>) { chomp $line; next if $line =~ m{^//}; if ($line =~ /^\^chara/) { push @charas, $line; next; } if ($line =~ /^\^music/) { my @f = split q{,}, $line; my @name = $f[1] =~m/([a-z]+) _ ([a-z]+) (\d+)/x; printf qq{mp3loop "%s\\%s_%04d.mp3"\n}, $name[1], $name[0], $name[2]; } } foreach my $chara (@charas) { my @f = split q{,}, $chara; printf qq{ld c,":a;mp\\%s_%s_%s.%s.jpg",%s,%s\n}, $f[1], $f[2], $f[3], $f[6], $f[4], $f[5] ; } __END__ ^music,rei_bgm0001 ^music,rei_bgm0002 ^music,rei_bgm0003 ^music,rei_bgm0004 ^music,rei_bgm0005 ^music,rei_bgm0006 ^music,rei_bgm0007 ^music,rei_bgm0008 ^music,rei_bgm0009 ^music,rei_bgm0010 ^music,rei_bgm0011 ^music,rei_bgm0012 ^music,rei_bgm0013 ^music,rei_bgm0014 ^music,rei_bgm0015 ^music,rei_bgm0016 ^music,rei_bgm0017 ^music,rei_bgm0018 ^music,rei_bgm0019 ^music,rei_bgm0020 ^music,rei_bgm0021 ^music,rei_bgm0022 ^music,rei_bgm0023 ^music,rei_bgm0024 ^music,rei_bgm0025 ^music,rei_bgm0026 ^music,rei_bgm0027 ^music,rei_bgm0028 ^music,rei_bgm0029 //30 ^music,rei_bgm0030 ^chara,ううう,えええ,いいいa,long,center,あああ ^music,rei_bgm0031 ^music,rei_bgm0032 ^music,rei_bgm0033 ^music,rei_bgm0034 ^music,rei_bgm0035 ^music,rei_bgm0036 ^music,rei_bgm0037 ^music,rei_bgm0038 ^music,rei_bgm0039 ^music,rei_bgm0040 ^music,rei_bgm0041 ^music,rei_bgm0042 ^music,rei_bgm0043 ^music,rei_bgm0044 ^music,rei_bgm0045 ^music,rei_bgm0046 ^music,rei_bgm0047 ^chara,くくく,けけけ,ききき,long,center,かかか ^music,rei_bgm0048 ^music,rei_bgm0049 ^music,rei_bgm0050 ^music,rei_bgm0051 ^music,rei_bgm0052 ^music,rei_bgm0053 ^music,rei_bgm0054 ^music,rei_bgm0055 ^music,rei_bgm0056 ^music,rei_bgm0057 ^music,rei_bgm0058 ^music,rei_bgm0059 //60 ^music,rei_bgm0060 ^music,rei_bgm0061 ^music,rei_bgm0062 ^music,rei_bgm0063 ^music,rei_bgm0064 ^music,rei_bgm0065 ^music,rei_bgm0066 ^music,rei_bgm0067 結果: mp3loop "bgm\rei_0001.mp3" mp3loop "bgm\rei_0002.mp3" mp3loop "bgm\rei_0003.mp3" mp3loop "bgm\rei_0004.mp3" mp3loop "bgm\rei_0005.mp3" mp3loop "bgm\rei_0006.mp3" mp3loop "bgm\rei_0007.mp3" mp3loop "bgm\rei_0008.mp3" mp3loop "bgm\rei_0009.mp3" mp3loop "bgm\rei_0010.mp3" mp3loop "bgm\rei_0011.mp3" mp3loop "bgm\rei_0012.mp3" mp3loop "bgm\rei_0013.mp3" mp3loop "bgm\rei_0014.mp3" mp3loop "bgm\rei_0015.mp3" mp3loop "bgm\rei_0016.mp3" mp3loop "bgm\rei_0017.mp3" mp3loop "bgm\rei_0018.mp3" mp3loop "bgm\rei_0019.mp3" mp3loop "bgm\rei_0020.mp3" mp3loop "bgm\rei_0021.mp3" mp3loop "bgm\rei_0022.mp3" mp3loop "bgm\rei_0023.mp3" mp3loop "bgm\rei_0024.mp3" mp3loop "bgm\rei_0025.mp3" mp3loop "bgm\rei_0026.mp3" mp3loop "bgm\rei_0027.mp3" mp3loop "bgm\rei_0028.mp3" mp3loop "bgm\rei_0029.mp3" mp3loop "bgm\rei_0030.mp3" mp3loop "bgm\rei_0031.mp3" mp3loop "bgm\rei_0032.mp3" mp3loop "bgm\rei_0033.mp3" mp3loop "bgm\rei_0034.mp3" mp3loop "bgm\rei_0035.mp3" mp3loop "bgm\rei_0036.mp3" mp3loop "bgm\rei_0037.mp3" mp3loop "bgm\rei_0038.mp3" mp3loop "bgm\rei_0039.mp3" mp3loop "bgm\rei_0040.mp3" mp3loop "bgm\rei_0041.mp3" mp3loop "bgm\rei_0042.mp3" mp3loop "bgm\rei_0043.mp3" mp3loop "bgm\rei_0044.mp3" mp3loop "bgm\rei_0045.mp3" mp3loop "bgm\rei_0046.mp3" mp3loop "bgm\rei_0047.mp3" mp3loop "bgm\rei_0048.mp3" mp3loop "bgm\rei_0049.mp3" mp3loop "bgm\rei_0050.mp3" mp3loop "bgm\rei_0051.mp3" mp3loop "bgm\rei_0052.mp3" mp3loop "bgm\rei_0053.mp3" mp3loop "bgm\rei_0054.mp3" mp3loop "bgm\rei_0055.mp3" mp3loop "bgm\rei_0056.mp3" mp3loop "bgm\rei_0057.mp3" mp3loop "bgm\rei_0058.mp3" mp3loop "bgm\rei_0059.mp3" mp3loop "bgm\rei_0060.mp3" mp3loop "bgm\rei_0061.mp3" mp3loop "bgm\rei_0062.mp3" mp3loop "bgm\rei_0063.mp3" mp3loop "bgm\rei_0064.mp3" mp3loop "bgm\rei_0065.mp3" mp3loop "bgm\rei_0066.mp3" mp3loop "bgm\rei_0067.mp3" ld c,":a;mp\ううう_えええ_いいいa.あああ.jpg",long,center ld c,":a;mp\くくく_けけけ_ききき.かかか.jpg",long,center

その他の回答 (1)

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

えぇと, 「改行」って全く関係ないのでは? とりあえず不明な点をいくつか: ・「^music,rei_bgm0001」とか「^chara,ううう,えええ,いいいa,long,center,あああ」は, 先頭の「^」も入っているのですか? ・これらのフォーマットは固定なのでしょうか? つまり, 「^music,」とか「^chara,」あたりは一定なのでしょうか? また, (2) の方では「long center」も固定なのでしょうか? 1行のカンマの数も, それぞれここに上がっている通りでしょうか? ・「// の入った行」というのは, 「行のどこかにスラッシュが 2個続けて現れる」という解釈でいいですか? それとも, 行の先頭の場合だけを考えますか? ・ここに上がっていない形の行はどうすればいいですか?

hanahana_2
質問者

補足

1^music,rei_bgm0001などは(^)も含んでいます。 2「^music,」とか「^chara,」は固定です. 3すいません「// の入った行」は//が先頭にはいった行です。 補足、すいません.これは ld c,":a;mp\ううう_えええ_いいいa_あああ.jpg",long,center, ld c,":a;mp\ううう_えええ_long_いいいa.あああ.jpg",center, で ^chara,ううう,えええ,いいいa,long,center,あああ は【,】で区切られている物の中の(^chara)を消し ld c,":a;mp\ううう_えええ_long_いいいa_あああ.jpgのカタチに置き換えると言う事です。 もう私ではお手上げでした。

関連するQ&A