$inputfile="サンプルテキスト.txt"; $outputfile="サンプルテキストout.txt"; open(IN, $inputfile); @ARY = <IN>; close(IN); $myStr = join("", @ARY); $myStr =~ tr/a-z/A-Z/; #小文字→大文字 open (OUT,"> $outputfile");#書き込み新規文章で書き込む print (OUT $myStr); close(OUT); exit;
正規表現の最近のブログ記事
""ではさまれた文字をぬきだす。 $inputfile="サンプルテキスト.txt"; $outputfile="サンプルテキストout.txt"; open(IN, $inputfile); @ARY = <IN>; close(IN); #まずは""を含む配列を取り出す。 @ARY2 = grep(/".+"/, @ARY); #@ARY2 =~ m/(".+")/;#こんな風に一発で取り出せると思うのだが。。。 #つぎに取り出した配列の中から""のテキストだけとりだす。 foreach $buf (@ARY2) { $buf =~ m/"(.+)"/g; print $1; $wStr.="$1\n"; } open (OUT,"> $outputfile");#書き込み新規文章で書き込む print (OUT $wStr); close(OUT); exit;
$inputfile="サンプルテキスト.txt"; $outputfile="サンプルテキストout.txt"; open(IN, $inputfile); @ARY = <IN>; close(IN); $myStr = join(" ", @ARY); $myStr =~ s/(if)(.+)=(.+)(then)/<font color="red">$1<\/font><b>$2<\/b>=<b>$3<\/b><font color="red">$4<\/font>/; #小文字→大文字 open (OUT,"> $outputfile");#書き込み新規文章で書き込む print (OUT $myStr); close(OUT); exit;
$inputfile="サンプルテキスト.txt"; $outputfile="サンプルテキストout.txt"; open(IN, $inputfile); @ARY = <IN>; close(IN); $myStr = join(" ", @ARY); $myStr =~ s/(if.+then)/<font color="red">$1<\/font>/; #小文字→大文字 open (OUT,"> $outputfile");#書き込み新規文章で書き込む print (OUT $myStr); close(OUT); exit;
■変換演算子
tr/対象リスト/変換リスト/
$S =~ tr/abc/ABC/; #小文字→大文字
$S =~ tr/a-z/A-Z/; #小文字→大文字
オプション
c 対象リストに含まれないものを変換
d 変換リストに含まれないものを削除
s 連続文字を1文字に変換
= 代入
~ 2の補数(ビットを反転)
=~ 右側を実行して左に代入
■マッチパターン演算子
s/マッチパターン/置換文字列/
$S =~ s/abc/123/; abcを123へ
オプション
e 置換文字列を式とする
g 全部置き換え
i 大文字小文字の区別なし
s 単一行マッチ
m 複数行マッチ
o パターンコンパイル
x 空白を無視 #をコメント処理
■マッチ演算子
m/マッチパターン/ #mは省略可能。
$str =~ m!/!; #このように"/"を検索するようなときは区切り文字を変更できる。ただしmは省略できない。