Perl Perl_1 正規表現
Perl 「 正規表現 」: s/// 大小文字を操る ( \U, \u, \L, \l, \E ) (0x78)

目次 - Perl Index
Theme
Perl について、復習を兼ねて断片的な情報を掲載して行く連載その 0x78 回。
Perl 「 正規表現 」( Regular expression )「 s/// 」演算子で、文字列を大文字に変換する「 \U 」と、小文字に変換する「 \L 」、それと「 \E 」の動作を確認する。
文字列を大文字に変換する (\U, \u)
s/// では、マッチングした文字列を大文字に変換することが出来ます。
大文字変換で利用するのは「 \U 」と「 \u 」というエスケープシーケンスです。
英文字「 U 」は、「 Upper case 」( 大文字 ) の「 U 」だと思います。
「 エスケープシーケンス 」とは、「 通常の文字列では表現出来ない特殊文字や機能を表すもの 」で、これまで確認した改行文字や文字クラス、アンカー等が相当します。
「 \U 」は、後に続く REPLACE 用の文字列をすべて大文字に変換します。
$_ = "Boo Foo Woo";
s/^(.*)\$/\U$1/;
print "$_\n";
上記の例では s/// の PATERN 部分で文字列をすべてキャプチャし、REPLACE 部分では、「 \U 」をマッチ変数「 $1 」の前に配置しています。
実行結果では、次の様にすべて大文字になります。
BOO FOO WOO
「 \U 」の代わりに「 \u 」を指定した場合は、直後の 1 文字のみが大文字になります。
$_ = "boo foo woo";
s/^(.*)\$/\u$1/;
print "$_\n";
実行結果は次の通りです。
Boo foo woo
REPLACE 部分では、文字列「 boo foo woo 」が格納されているマッチ変数「 $1 」の前に「 \u 」を配置してあります。
「 \u 」は、直後 ( 直右 ) の 1 文字のみを大文字に変換するため、「 boo 」の「 b 」だけが大文字「 B 」になります。
文字列を小文字に変換する (\L, \l)
エスケープシーケンス「 \L 」と「 \l 」を利用することで、小文字への変換を行うことが出来ます。
英文字の「 L 」は、「 Lower case 」( 小文字 ) の「 L 」だと思われます。
「 \L 」と「 \l 」の違いは「 \U 」と「 \u 」と同じです。
$_ = "BOO FOO WOO";
s/^(.*)$/\L$1/;
print "$_\n";
s/^(.*)$/\U$1/; # すべて大文字に戻す
s/(.*)/\l$1/i;
print "$_\n";
実行結果は次の様になります。
boo foo woo
bOO FOO WOO
3 行目の置換により $_ の文字列がすべて小文字に置き換えられているため、 4 行目の print 文ではすべて小文字として出力されます。
6 行目の置換は、「 \l 」の効果を見るために「 \U 」を利用した大文字への変換処理です。
9 行目の print 文では、8 行目の置換によって「 \l 」が指定されているため、「 BOO 」の「 B 」のみ「 b 」に変換されています。
変換処理の制御
1 度に変換が出来る「 \U 」や「 \L 」は便利ですが、少しやっかいでもあります。
$_ = "boo foo woo";
s/(foo)/\U$1 is Upper case./;
print "$_\n";
3 行目の置換では文字列「 boo FOO is Upper case. woo 」を期待している様に見えますが、実際には次の様に出力されます。
boo FOO IS UPPER CASE. woo
「 \U 」の効果によって、REPLACE 部分の文字列がすべて大文字になっています。小文字に変換したい場合の「 \L 」にも同様の問題があります。
しかしながら、例えば 1 文字のみを変換する「 \u 」を工夫して利用すればこの問題を解決出来ます。
s/(f)(o)(o)/\u$1\u$2\u$3 is Upper case./;
print "$_\n";
print 文は次の様に期待通りの文字列を出力します。
boo FOO is Upper case. woo
万事 OK と思いたいところですが、少し手間がかかり過ぎです。
「 \E 」はこうした憂いを解消します。
「 \E 」を使って変換を制御する
「 \E 」は、大小の文字変換の終端を表すエスケープシーケンスです。
「 E 」は「 End edge 」( 終端 ) の「 E 」と解釈しています。
「 \E 」は次の様に利用します。
s/(foo)/\U$1\E is Upper case./;
print "$_\n";
マッチ演算子「 $1 」には、マッチングしたパターン「 foo 」が格納されています。
「 $1 」の直前には「 \U 」を配置しているので、本来であれば REPLACE 部分すべてが大文字になるはずです。
しかしながら、ここでは「 $1 」の直後に「 \E 」を配置することで、大文字への変換対象を「 $1 」のみに留めてあります。
print 文の出力は次の通りです。
boo FOO is Upper case. woo
「 \E 」の位置を変更することで、変換対象の微調整も出来ます。
s/(foo)/\U$1 i\Es Upper case./;
print "$_\n";
print 文は次の様に出力します。
boo FOO Is Upper case. woo
あまり意味はないですが、こういうことも出来るという例です。
大小変換を同時に利用する
大小文字変換のためのエスケープシークエンスを同時に利用することが可能です。
「 \U\l 」と「 \l\U 」は同じ意味で、最初の 1 文字だけを小文字にして残りをすべて大文字にします。
「 \L\u 」と「 \u\L 」はその反対に、最初の 1 文字を大文字にして残りを小文字にします。
つまり「 \L\u$1 」とした場合、「 $1 」の中身が何であれ、最初の 1 文字が大文字になり残りはすべて小文字になります。
「 $1 」の文字列が 1 文字しかない場合は、その 1 文字が大文字になります。「 \L 」の対象が特に無くてもエラーにはなりません。
0x78 -> 0x79 へ
大小の文字変換はマッチ演算子「 m// 」でも利用可能です。
perldoc.jp - perlretut の例で確認します。
# マッチング対象の文字列に「 \L 」「 \E 」を指定
$x = "This word is in lower case:\L SHOUT\E";
($y) = $x =~ /(shout)/;
print "$y\n"; # shout を出力
# マッチングパターンに「 \U 」を指定
$x = "I STILL KEYPUNCH CARDS FOR MY 360";
($y) = $x =~ /(\Ukeypunch)/;
print "$y\n"; # KEYPUNCH を出力
なるほど。
しかしながら、今の僕にはこの機能の使い道が見えていません。
やがて分かる様になるのでしょうか。
参考情報は書籍「 初めての Perl 第 6 版 」を中心に perldoc, Wikipedia および各 Web サイト。それと詳しい先輩。
目次 - Perl Index
s/// では、マッチングした文字列を大文字に変換することが出来ます。
大文字変換で利用するのは「 \U 」と「 \u 」というエスケープシーケンスです。
英文字「 U 」は、「 Upper case 」( 大文字 ) の「 U 」だと思います。
「 エスケープシーケンス 」とは、「 通常の文字列では表現出来ない特殊文字や機能を表すもの 」で、これまで確認した改行文字や文字クラス、アンカー等が相当します。
「 \U 」は、後に続く REPLACE 用の文字列をすべて大文字に変換します。
$_ = "Boo Foo Woo";
s/^(.*)\$/\U$1/;
print "$_\n";
上記の例では s/// の PATERN 部分で文字列をすべてキャプチャし、REPLACE 部分では、「 \U 」をマッチ変数「 $1 」の前に配置しています。
実行結果では、次の様にすべて大文字になります。
BOO FOO WOO
「 \U 」の代わりに「 \u 」を指定した場合は、直後の 1 文字のみが大文字になります。
$_ = "boo foo woo";
s/^(.*)\$/\u$1/;
print "$_\n";
実行結果は次の通りです。
Boo foo woo
REPLACE 部分では、文字列「 boo foo woo 」が格納されているマッチ変数「 $1 」の前に「 \u 」を配置してあります。
「 \u 」は、直後 ( 直右 ) の 1 文字のみを大文字に変換するため、「 boo 」の「 b 」だけが大文字「 B 」になります。
文字列を小文字に変換する (\L, \l)
エスケープシーケンス「 \L 」と「 \l 」を利用することで、小文字への変換を行うことが出来ます。
英文字の「 L 」は、「 Lower case 」( 小文字 ) の「 L 」だと思われます。
「 \L 」と「 \l 」の違いは「 \U 」と「 \u 」と同じです。
$_ = "BOO FOO WOO";
s/^(.*)$/\L$1/;
print "$_\n";
s/^(.*)$/\U$1/; # すべて大文字に戻す
s/(.*)/\l$1/i;
print "$_\n";
実行結果は次の様になります。
boo foo woo
bOO FOO WOO
3 行目の置換により $_ の文字列がすべて小文字に置き換えられているため、 4 行目の print 文ではすべて小文字として出力されます。
6 行目の置換は、「 \l 」の効果を見るために「 \U 」を利用した大文字への変換処理です。
9 行目の print 文では、8 行目の置換によって「 \l 」が指定されているため、「 BOO 」の「 B 」のみ「 b 」に変換されています。
変換処理の制御
1 度に変換が出来る「 \U 」や「 \L 」は便利ですが、少しやっかいでもあります。
$_ = "boo foo woo";
s/(foo)/\U$1 is Upper case./;
print "$_\n";
3 行目の置換では文字列「 boo FOO is Upper case. woo 」を期待している様に見えますが、実際には次の様に出力されます。
boo FOO IS UPPER CASE. woo
「 \U 」の効果によって、REPLACE 部分の文字列がすべて大文字になっています。小文字に変換したい場合の「 \L 」にも同様の問題があります。
しかしながら、例えば 1 文字のみを変換する「 \u 」を工夫して利用すればこの問題を解決出来ます。
s/(f)(o)(o)/\u$1\u$2\u$3 is Upper case./;
print "$_\n";
print 文は次の様に期待通りの文字列を出力します。
boo FOO is Upper case. woo
万事 OK と思いたいところですが、少し手間がかかり過ぎです。
「 \E 」はこうした憂いを解消します。
「 \E 」を使って変換を制御する
「 \E 」は、大小の文字変換の終端を表すエスケープシーケンスです。
「 E 」は「 End edge 」( 終端 ) の「 E 」と解釈しています。
「 \E 」は次の様に利用します。
s/(foo)/\U$1\E is Upper case./;
print "$_\n";
マッチ演算子「 $1 」には、マッチングしたパターン「 foo 」が格納されています。
「 $1 」の直前には「 \U 」を配置しているので、本来であれば REPLACE 部分すべてが大文字になるはずです。
しかしながら、ここでは「 $1 」の直後に「 \E 」を配置することで、大文字への変換対象を「 $1 」のみに留めてあります。
print 文の出力は次の通りです。
boo FOO is Upper case. woo
「 \E 」の位置を変更することで、変換対象の微調整も出来ます。
s/(foo)/\U$1 i\Es Upper case./;
print "$_\n";
print 文は次の様に出力します。
boo FOO Is Upper case. woo
あまり意味はないですが、こういうことも出来るという例です。
大小変換を同時に利用する
大小文字変換のためのエスケープシークエンスを同時に利用することが可能です。
「 \U\l 」と「 \l\U 」は同じ意味で、最初の 1 文字だけを小文字にして残りをすべて大文字にします。
「 \L\u 」と「 \u\L 」はその反対に、最初の 1 文字を大文字にして残りを小文字にします。
つまり「 \L\u$1 」とした場合、「 $1 」の中身が何であれ、最初の 1 文字が大文字になり残りはすべて小文字になります。
「 $1 」の文字列が 1 文字しかない場合は、その 1 文字が大文字になります。「 \L 」の対象が特に無くてもエラーにはなりません。
0x78 -> 0x79 へ
大小の文字変換はマッチ演算子「 m// 」でも利用可能です。
perldoc.jp - perlretut の例で確認します。
# マッチング対象の文字列に「 \L 」「 \E 」を指定
$x = "This word is in lower case:\L SHOUT\E";
($y) = $x =~ /(shout)/;
print "$y\n"; # shout を出力
# マッチングパターンに「 \U 」を指定
$x = "I STILL KEYPUNCH CARDS FOR MY 360";
($y) = $x =~ /(\Ukeypunch)/;
print "$y\n"; # KEYPUNCH を出力
なるほど。
しかしながら、今の僕にはこの機能の使い道が見えていません。
やがて分かる様になるのでしょうか。
参考情報は書籍「 初めての Perl 第 6 版 」を中心に perldoc, Wikipedia および各 Web サイト。それと詳しい先輩。
目次 - Perl Index
エスケープシーケンス「 \L 」と「 \l 」を利用することで、小文字への変換を行うことが出来ます。
英文字の「 L 」は、「 Lower case 」( 小文字 ) の「 L 」だと思われます。
「 \L 」と「 \l 」の違いは「 \U 」と「 \u 」と同じです。
$_ = "BOO FOO WOO";
s/^(.*)$/\L$1/;
print "$_\n";
s/^(.*)$/\U$1/; # すべて大文字に戻す
s/(.*)/\l$1/i;
print "$_\n";
実行結果は次の様になります。
boo foo woo
bOO FOO WOO
3 行目の置換により $_ の文字列がすべて小文字に置き換えられているため、 4 行目の print 文ではすべて小文字として出力されます。
6 行目の置換は、「 \l 」の効果を見るために「 \U 」を利用した大文字への変換処理です。
9 行目の print 文では、8 行目の置換によって「 \l 」が指定されているため、「 BOO 」の「 B 」のみ「 b 」に変換されています。
変換処理の制御
1 度に変換が出来る「 \U 」や「 \L 」は便利ですが、少しやっかいでもあります。
$_ = "boo foo woo";
s/(foo)/\U$1 is Upper case./;
print "$_\n";
3 行目の置換では文字列「 boo FOO is Upper case. woo 」を期待している様に見えますが、実際には次の様に出力されます。
boo FOO IS UPPER CASE. woo
「 \U 」の効果によって、REPLACE 部分の文字列がすべて大文字になっています。小文字に変換したい場合の「 \L 」にも同様の問題があります。
しかしながら、例えば 1 文字のみを変換する「 \u 」を工夫して利用すればこの問題を解決出来ます。
s/(f)(o)(o)/\u$1\u$2\u$3 is Upper case./;
print "$_\n";
print 文は次の様に期待通りの文字列を出力します。
boo FOO is Upper case. woo
万事 OK と思いたいところですが、少し手間がかかり過ぎです。
「 \E 」はこうした憂いを解消します。
「 \E 」を使って変換を制御する
「 \E 」は、大小の文字変換の終端を表すエスケープシーケンスです。
「 E 」は「 End edge 」( 終端 ) の「 E 」と解釈しています。
「 \E 」は次の様に利用します。
s/(foo)/\U$1\E is Upper case./;
print "$_\n";
マッチ演算子「 $1 」には、マッチングしたパターン「 foo 」が格納されています。
「 $1 」の直前には「 \U 」を配置しているので、本来であれば REPLACE 部分すべてが大文字になるはずです。
しかしながら、ここでは「 $1 」の直後に「 \E 」を配置することで、大文字への変換対象を「 $1 」のみに留めてあります。
print 文の出力は次の通りです。
boo FOO is Upper case. woo
「 \E 」の位置を変更することで、変換対象の微調整も出来ます。
s/(foo)/\U$1 i\Es Upper case./;
print "$_\n";
print 文は次の様に出力します。
boo FOO Is Upper case. woo
あまり意味はないですが、こういうことも出来るという例です。
大小変換を同時に利用する
大小文字変換のためのエスケープシークエンスを同時に利用することが可能です。
「 \U\l 」と「 \l\U 」は同じ意味で、最初の 1 文字だけを小文字にして残りをすべて大文字にします。
「 \L\u 」と「 \u\L 」はその反対に、最初の 1 文字を大文字にして残りを小文字にします。
つまり「 \L\u$1 」とした場合、「 $1 」の中身が何であれ、最初の 1 文字が大文字になり残りはすべて小文字になります。
「 $1 」の文字列が 1 文字しかない場合は、その 1 文字が大文字になります。「 \L 」の対象が特に無くてもエラーにはなりません。
0x78 -> 0x79 へ
大小の文字変換はマッチ演算子「 m// 」でも利用可能です。
perldoc.jp - perlretut の例で確認します。
# マッチング対象の文字列に「 \L 」「 \E 」を指定
$x = "This word is in lower case:\L SHOUT\E";
($y) = $x =~ /(shout)/;
print "$y\n"; # shout を出力
# マッチングパターンに「 \U 」を指定
$x = "I STILL KEYPUNCH CARDS FOR MY 360";
($y) = $x =~ /(\Ukeypunch)/;
print "$y\n"; # KEYPUNCH を出力
なるほど。
しかしながら、今の僕にはこの機能の使い道が見えていません。
やがて分かる様になるのでしょうか。
参考情報は書籍「 初めての Perl 第 6 版 」を中心に perldoc, Wikipedia および各 Web サイト。それと詳しい先輩。
目次 - Perl Index
1 度に変換が出来る「 \U 」や「 \L 」は便利ですが、少しやっかいでもあります。
$_ = "boo foo woo";
s/(foo)/\U$1 is Upper case./;
print "$_\n";
3 行目の置換では文字列「 boo FOO is Upper case. woo 」を期待している様に見えますが、実際には次の様に出力されます。
boo FOO IS UPPER CASE. woo
「 \U 」の効果によって、REPLACE 部分の文字列がすべて大文字になっています。小文字に変換したい場合の「 \L 」にも同様の問題があります。
しかしながら、例えば 1 文字のみを変換する「 \u 」を工夫して利用すればこの問題を解決出来ます。
s/(f)(o)(o)/\u$1\u$2\u$3 is Upper case./;
print "$_\n";
print 文は次の様に期待通りの文字列を出力します。
boo FOO is Upper case. woo
万事 OK と思いたいところですが、少し手間がかかり過ぎです。
「 \E 」はこうした憂いを解消します。
「 \E 」を使って変換を制御する
「 \E 」は、大小の文字変換の終端を表すエスケープシーケンスです。
「 E 」は「 End edge 」( 終端 ) の「 E 」と解釈しています。
「 \E 」は次の様に利用します。
s/(foo)/\U$1\E is Upper case./;
print "$_\n";
マッチ演算子「 $1 」には、マッチングしたパターン「 foo 」が格納されています。
「 $1 」の直前には「 \U 」を配置しているので、本来であれば REPLACE 部分すべてが大文字になるはずです。
しかしながら、ここでは「 $1 」の直後に「 \E 」を配置することで、大文字への変換対象を「 $1 」のみに留めてあります。
print 文の出力は次の通りです。
boo FOO is Upper case. woo
「 \E 」の位置を変更することで、変換対象の微調整も出来ます。
s/(foo)/\U$1 i\Es Upper case./;
print "$_\n";
print 文は次の様に出力します。
boo FOO Is Upper case. woo
あまり意味はないですが、こういうことも出来るという例です。
大小変換を同時に利用する
大小文字変換のためのエスケープシークエンスを同時に利用することが可能です。
「 \U\l 」と「 \l\U 」は同じ意味で、最初の 1 文字だけを小文字にして残りをすべて大文字にします。
「 \L\u 」と「 \u\L 」はその反対に、最初の 1 文字を大文字にして残りを小文字にします。
つまり「 \L\u$1 」とした場合、「 $1 」の中身が何であれ、最初の 1 文字が大文字になり残りはすべて小文字になります。
「 $1 」の文字列が 1 文字しかない場合は、その 1 文字が大文字になります。「 \L 」の対象が特に無くてもエラーにはなりません。
0x78 -> 0x79 へ
大小の文字変換はマッチ演算子「 m// 」でも利用可能です。
perldoc.jp - perlretut の例で確認します。
# マッチング対象の文字列に「 \L 」「 \E 」を指定
$x = "This word is in lower case:\L SHOUT\E";
($y) = $x =~ /(shout)/;
print "$y\n"; # shout を出力
# マッチングパターンに「 \U 」を指定
$x = "I STILL KEYPUNCH CARDS FOR MY 360";
($y) = $x =~ /(\Ukeypunch)/;
print "$y\n"; # KEYPUNCH を出力
なるほど。
しかしながら、今の僕にはこの機能の使い道が見えていません。
やがて分かる様になるのでしょうか。
参考情報は書籍「 初めての Perl 第 6 版 」を中心に perldoc, Wikipedia および各 Web サイト。それと詳しい先輩。
目次 - Perl Index
「 \E 」は、大小の文字変換の終端を表すエスケープシーケンスです。
「 E 」は「 End edge 」( 終端 ) の「 E 」と解釈しています。
「 \E 」は次の様に利用します。
s/(foo)/\U$1\E is Upper case./;
print "$_\n";
マッチ演算子「 $1 」には、マッチングしたパターン「 foo 」が格納されています。
「 $1 」の直前には「 \U 」を配置しているので、本来であれば REPLACE 部分すべてが大文字になるはずです。
しかしながら、ここでは「 $1 」の直後に「 \E 」を配置することで、大文字への変換対象を「 $1 」のみに留めてあります。
print 文の出力は次の通りです。
boo FOO is Upper case. woo
「 \E 」の位置を変更することで、変換対象の微調整も出来ます。
s/(foo)/\U$1 i\Es Upper case./;
print "$_\n";
print 文は次の様に出力します。
boo FOO Is Upper case. woo
あまり意味はないですが、こういうことも出来るという例です。
大小変換を同時に利用する
大小文字変換のためのエスケープシークエンスを同時に利用することが可能です。
「 \U\l 」と「 \l\U 」は同じ意味で、最初の 1 文字だけを小文字にして残りをすべて大文字にします。
「 \L\u 」と「 \u\L 」はその反対に、最初の 1 文字を大文字にして残りを小文字にします。
つまり「 \L\u$1 」とした場合、「 $1 」の中身が何であれ、最初の 1 文字が大文字になり残りはすべて小文字になります。
「 $1 」の文字列が 1 文字しかない場合は、その 1 文字が大文字になります。「 \L 」の対象が特に無くてもエラーにはなりません。
0x78 -> 0x79 へ
大小の文字変換はマッチ演算子「 m// 」でも利用可能です。
perldoc.jp - perlretut の例で確認します。
# マッチング対象の文字列に「 \L 」「 \E 」を指定
$x = "This word is in lower case:\L SHOUT\E";
($y) = $x =~ /(shout)/;
print "$y\n"; # shout を出力
# マッチングパターンに「 \U 」を指定
$x = "I STILL KEYPUNCH CARDS FOR MY 360";
($y) = $x =~ /(\Ukeypunch)/;
print "$y\n"; # KEYPUNCH を出力
なるほど。
しかしながら、今の僕にはこの機能の使い道が見えていません。
やがて分かる様になるのでしょうか。
参考情報は書籍「 初めての Perl 第 6 版 」を中心に perldoc, Wikipedia および各 Web サイト。それと詳しい先輩。
目次 - Perl Index
大小文字変換のためのエスケープシークエンスを同時に利用することが可能です。
「 \U\l 」と「 \l\U 」は同じ意味で、最初の 1 文字だけを小文字にして残りをすべて大文字にします。
「 \L\u 」と「 \u\L 」はその反対に、最初の 1 文字を大文字にして残りを小文字にします。
つまり「 \L\u$1 」とした場合、「 $1 」の中身が何であれ、最初の 1 文字が大文字になり残りはすべて小文字になります。
「 $1 」の文字列が 1 文字しかない場合は、その 1 文字が大文字になります。「 \L 」の対象が特に無くてもエラーにはなりません。
0x78 -> 0x79 へ
大小の文字変換はマッチ演算子「 m// 」でも利用可能です。
perldoc.jp - perlretut の例で確認します。
# マッチング対象の文字列に「 \L 」「 \E 」を指定
$x = "This word is in lower case:\L SHOUT\E";
($y) = $x =~ /(shout)/;
print "$y\n"; # shout を出力
# マッチングパターンに「 \U 」を指定
$x = "I STILL KEYPUNCH CARDS FOR MY 360";
($y) = $x =~ /(\Ukeypunch)/;
print "$y\n"; # KEYPUNCH を出力
なるほど。
しかしながら、今の僕にはこの機能の使い道が見えていません。
やがて分かる様になるのでしょうか。
参考情報は書籍「 初めての Perl 第 6 版 」を中心に perldoc, Wikipedia および各 Web サイト。それと詳しい先輩。
目次 - Perl Index
Perl mp2 翻訳 Web コンテンツ圧縮の FAQ (d228)
Perl mp2 翻訳 既知のブラウザのバグの回避策をいくつか (d227)
Perl mp2 翻訳 Perl と Apache でのキュートなトリック (d226)
Perl mp2 翻訳 テンプレートシステムの選択 (d225)
Perl mp2 翻訳 大規模 E コマースサイトの構築 (d224)
Perl mp2 翻訳 チュートリアル (d223)
Perl mp2 翻訳 既知のブラウザのバグの回避策をいくつか (d227)
Perl mp2 翻訳 Perl と Apache でのキュートなトリック (d226)
Perl mp2 翻訳 テンプレートシステムの選択 (d225)
Perl mp2 翻訳 大規模 E コマースサイトの構築 (d224)
Perl mp2 翻訳 チュートリアル (d223)