• 締切済み

Perl で 置換

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) //の入った行だけを全て削除する。です。 解りにくいかと思いますが宜しくお願いします.

みんなの回答

  • yasubee2
  • ベストアンサー率0% (0/1)
回答No.1

参考まで 使い方:第1引数に^music,rei_bgm0001などの数行が記録されたファイルを指定します。 $ cat bbb ^music,rei_bgm0001 ^music,rei_bgm0002 ^music,rei_bgm0003 ~hoge,hoaegha001 ^music,rei_bgm0004 ^music,rei_bgm0005 ^music,rei_bgm0006 ^music,rei_bgm0007 ^music,rei_bgm0008 $ perl script.pl bbb mp3loop "bgm\rei_bgm0001.mp3" mp3loop "bgm\rei_bgm0002.mp3" mp3loop "bgm\rei_bgm0003.mp3" mp3loop "bgm\rei_bgm0004.mp3" mp3loop "bgm\rei_bgm0005.mp3" mp3loop "bgm\rei_bgm0006.mp3" mp3loop "bgm\rei_bgm0007.mp3" mp3loop "bgm\rei_bgm0008.mp3" 引数で指定されたファイルをreadlistで読み込み、改行コードを除いてsedbgmnameに1行渡しています。 sedbgmnameでパターンマッチをおこなっています。 (1)(2)はスクリプトを参考にパターンマッチを調べれば解決できると思います。 (3)は意味がよくわかりませんでした。 それでは、頑張ってください。 #!/usr/bin/perl use strict; use warnings; sub sedbgmname { return unless (@_); foreach ( @_ ) { if ( /([^,]*),(.*)/ ) { print "mp3loop \"bgm\\$2\.mp3\"\n" if ( $1 eq '^music' ); } } } sub readlist { my ( $readfile ) = @_; open ( FILELIST, $readfile ) or die; while ( <FILELIST> ) { chomp; sedbgmname($_) ; } close ( FILELIST ); } my ( $filepath ) = @ARGV; exit 1 unless ( -e $filepath && -f $filepath && -r $filepath ); &readlist( $filepath ) or die; __END__

関連するQ&A