
http://ash.jp/perl/tips_perl01.htm
のサイトに
# URLエンコード
$arg =~ s/(\W)/'%'.unpack("H2", $1)/ego;
と書かれていましたが、最後のoの効果が分かりません。
$argが何という文字であったなら、そのoが有る場合と
無い場合の違いが分かるのか、具体的な$argの値と一緒に
説明してください。
No.1ベストアンサー
- 回答日時:
こんばんは、ninmurai さん。
CGI の件ではなかったのですか。何もそう慌てて閉めなくても(^^;
でも、私もご質問の意味を少々つかみ損ねていたのは事実ですので、
再度ご説明いたします。
>$argが何という文字であったなら、そのoが有る場合と
無い場合の違いが分かるのか
$arg には URL 文字列が入るのですね。
$arg = "oshiete1.goo.ne.jp/kotaeru.php3?q=642085";
としましょう。すると、
$arg =~ s/(\W)/'%'.unpack("H2", $1)/ego;
においては unpack の働きで[0-9A-Za-z_]以外の文字、
つまり「.」→「%2e」、「/」→「%2f」、
「?」→「%3f」、「=」→「%3d」という置換が行われます。
その結果 $arg は「oshiete1%2egoo%2ene%2ejp%2fkotaeru%2ephp3%3fq%3d642085」
となります。
このうち、それぞれ URL 中に1度しか現れない「/」「?」「=」に対しては
「o」オプションの効果は出ないのですが、「.」は4回現れますので、
その4回の置換の際に「o」を用いることで変数の展開は1回だけで済む、
つまりいちいち「.」が「$1」に代入されることはなくなりその分速くなる、
とこういうことです。これでよろしいでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テキストファイルで提出とは?
-
Perlのエラーについてご教授く...
-
Wallpaper Engineでおすすめの...
-
bashスクリプト
-
TeraPadエディターの操作方法に...
-
perl 正規表現でエラー
-
Perl 特定のフォルダ以外削除
-
perl の open について教えてく...
-
Perl言語について。
-
ファイルをディレクトリ分配の...
-
アルファベットに付いて質問し...
-
#!/usr/bin/perlで書きだしたCG...
-
perlのflock関数でロックをかけ...
-
AI sisterとは、偽物の人ですか?
-
ファイルアイコンの左下に緑の□...
-
perlプログラミング 空白行削除
-
perlでリテラル値はメモリにど...
-
perlで2次元配列をサブルーチ...
-
Perlで時間の計算
-
perlについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストファイルで提出とは?
-
Perlのエラーについてご教授く...
-
openした後、closeしないでプロ...
-
perlをバージョンアップしたら...
-
INDIRECT 横に再度抽出したい
-
Perl の外部モジュールの利用方法
-
Strawberry Perl for Windows ...
-
Perlで同じフォルダにある任意...
-
perl 正規表現でエラー
-
PerlでUTF-8のファイルの文字列...
-
Perlで特定文字列から特定文字...
-
C言語の問題について
-
どこがおかしいのか教えてくだ...
-
arduino の割り込み処理について
-
perlのflock関数でロックをかけ...
-
bashスクリプト
-
Wallpaper Engineでおすすめの...
-
perlの構文でカンマの意味が分...
-
Perl(Windows)の文法について
-
Windows版のPerlについて
おすすめ情報