• 締切済み

perlでのメタ文字の表現について

perlでパラメータを取得する際、 文字に決まりがあるIDやpass は $q='&'.$ENV{'QUERY_STRING'}; $q=~/\Wpass=(\w+)/; $pass=$1; 等で取得出来るのですが、メールアドレスの取得となるとどのようにメタ文字で表現すればいいのか分かりません。 どなたかご教授下されば幸いです。

  • Perl
  • 回答数2
  • ありがとう数2

みんなの回答

回答No.2

CGIモジュールつかいませんか? my $q = CGI->new; my $pass = $q->param('pass');

senyou2000
質問者

お礼

ありがとうございます。  テストしてみたいと思います。

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

「メタ文字で表現する」の意味はよくわかりませんが, 正規表現で書きたいなら調べれば出る.

参考URL:
http://www.din.or.jp/~ohzaki/mail_regex.htm
senyou2000
質問者

お礼

ありがとうございます。  ちなみにどう書けば取得出来るかということです。

関連するQ&A

  • Perlの正規表現

    Perlの正規表現である文字列に文字列STRINGが含まれないようにするには ^(?!.*STRING).+$ と書くとググったら出てきました. ですが,?!について詳しいことまで書いてるサイトはありませんでした. ?!は具体的にはどのようなことをするのでしょうか?

  • 正規表現で「)」がメタ文字の理由?

    Perlの正規表現で、「)」(カッコ閉じ)は、「(」(カッコ開け)同様メタ文字で、もし/)/のようなマッチ演算子を書いて、「)」という文字列を検索しようとすると、Unmatched ) in regexというエラーになります。 しかし、「]」(角カッコ閉じ)や、「}」(中かっこ閉じ)は、メタ文字ではなく、/]/、/}/のようなマッチ演算子は正当で、それぞれ]、}をきちんと検索するのです。 「[」(角カッコ開け、文字クラスを作る)や、「{」(中かっこ開け)はメタ文字なのに、です。 開けがこないのに閉じが来た場合、]と}はエラーにならないのに、)だけはエラーになります。 これは、なぜでしょうか。

    • ベストアンサー
    • Perl
  • perl 正規表現処理について

    perlの正規表現で、Aというファイルの中から、2に マッチしたらマッチした行から}まで、抜き出すというのは どのようにやるのでしょうか? # ファイルAの内容 1 parameter { xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz } 2 parameter { aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb } 3 parameter { ccccccccccccccccccccccccccccccccc ddddddddddddddddddddddddddddddddd } 欲しいデータとしては 2 parameter { aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb } を取得したいです。 以上宜しくお願いします。

    • ベストアンサー
    • Perl
  • $ENV{'QUERY_STRING'}以外で引数を取得するには?

    CGI上で$ENV{'QUERY_STRING'}を使用しないで引数を取得するにはどうしたらいいのでしょうか? hoge.cgi?XXXX の XXXX を取得したいのですがある理由によって$ENV{'QUERY_STRING'}が使用できません。 よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • shellとWebでperlからphp(pukiwiki)を実行時、UTF8とBINARYとに扱いが別れ文字化けする問題

    以下のスクリプトをshellから $perl test.cgi として実行時、保存するファイルとSTDOUTされる文字列は共に文字化けせず表示されます。 また、phpの実行結果の文字コードをnkfコマンドで調べますとUTF8です。 Webからアクセスした場合、保存されるファイルとSTDOUTされる文字列は共に文字化けします。 nkfではBINARYと表示されます。 pukiwikiで出力される内容は、aaaと言う名称に対して半角英数字と日本語が混じった形で表示されるようにしております。(<span>aあ</span>みたいな形) bashの環境は $ printenv LANG=ja_JP.UTF-8 です。 pukiwikiのスクリプトの文字コードと出力は共にUTF-8です。 --------------------------------------------- #!/usr/bin/perl use utf8; use open ":utf8"; use open ":std"; BEGIN{ $| = 1; print "Content-type: text/html\n\n"; open(STDERR, ">&STDOUT"); } print <<EOM; <HTML lang=ja > <HEAD> <META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <HEAD><BODY> EOM my$query_get; chdir '/.../pukiwiki/'; $query_get="aaa"; undef$ENV{'CONTENT_LENGTH'}; undef$ENV{'QUERY_STRING'}; undef$ENV{'REQUEST_METHOD'}; $ENV{'QUERY_STRING'} = $query_get; $ENV{'REQUEST_METHOD'} = 'GET'; `php /.../pukiwiki/index.php|lv -Ou8 >$query_get.cgi`; $t= `php /.../pukiwiki/index.php|lv -Ou8`; $val= `php /.../pukiwiki/index.php|nkf -g`; print $t; print "<br>"; print $val; print <<EOM; <BODY> <HTML> EOM 1; --------------------------------------------- やりたい事は、Webからアクセスした際、文字化けしないように表示させたいのですが、どのようにすれば可能でございますでしょうか また、shellとWebからでは、どうして文字コードの扱いが異なるのでしょうか どなた様かご教授ねがえませんでしょうか。宜しくお願いします。

    • ベストアンサー
    • Perl
  • 正規表現について(Perl5準拠)

    HSPでプログラミングをしてるのですが、標準のHSPでは正規表現が使えないため、Perl5に準拠した正規表現が扱えるモジュールをインクルードして使っています。 正規表現初心者です。 プログラムのなかでファイのパスからファイル名だけにマッチするような正規表現を使いたいのですが上手くいきません。 具体的には c:円dir1円dir2円filename.xxxからfilename.xxxを抜き出すために ※円マークが質問に表示されないぬで「円」と書きました。 [^円]+$ という正規表現を考えました。意味は「円」以外の文字で始まる行末までの文字列という感じです。 「円」がメタ文字の為の記号だからダメなんでしょうか?自体を認識するためにはどのようにしたらいいのでしょうか? それとも正規表現がダメなんでしょうか? Perl5の場合でいいので、分かる方、教えてください。

  • 文字化け

    下記のようなcgiスクリプトがあり、test1.cgi から リンクの test2.cgiを呼ぶと 「リンドウ」が文字化けしてしまいます。 文字化けしないようにするには、どうしたらいいでしょうか。 Perl cgi 初心者です。 --------test1.cgi----------------------------------------- #!/usr/bin/perl print "Content-Type: text/html; charset=EUC-JP\n\n"; $name="リンドウ"; print "name=$name<br>"; print "<a href=\"test2.cgi?aaa,${name},bbb\">test2.cgi</a>\n"; ---------test2.cgi------------------------------------------------- #!/usr/bin/perl print "Content-type: text/html; charset=EUC_JP\n\n"; $query = $ENV{'QUERY_STRING'}; print "query=$query\n";

    • ベストアンサー
    • CGI
  • perlについて、教えてください。

    perlについて、教えてください。 「apple.html」と「bigin.html」に、それぞれ, textboxが一つあり、入力値をkeep.cgiで受取り、 「keep.txt」に書込もうと考えています。 a.htmlのテキストボックスに、入力して、submitボタンをクリック しても、「keep.txt」に何も書き込まれません。 「keep.txt」に、 _______ a=100 b=200 ________ のように、書込みたいと考えています。 下記、keep.cgiのどこが間違っているのか、教えてください。 ___以下、「keep.cgi」です。_______________________________ #! c:/perl/bin/perl if($ENV{'REQUEST_METHOD'} eq 'POST') { read(STDIN, $query, $ENV{'CONTENT_LENGTH'}); } else { $query = $ENV{'QUERY_STRING'}; } #$queryに「●_text=●」が入っている。 #ファイルを開く、読み書き用。 $open_file_name = "+<keep.txt"; open(A,$open_file_name); #開いたファイルを、1行ずつ読み込む。 while(<A>){ #$_には、keep.txtの、1行目が入っている。 #$_(読込んだ行)に「●_text」があるか、チェックする if($_ =~ /$query/){ #あった場合 next; } #読込んだ行に、$query以外なら、配列に。 @keep = $_; @keep = $query } #ファイルを閉じる。 close(A); #ファイルを削除する unlink($open_file_name); #削除したのと、同じファイル名で新規作成 $new_file = ">>keep.txt"; open(A,$new_file); #再度、作成したファイルに、配列@keepを書込む。 print A @keep; #ファイルを閉じる close(A); print "Cotent-type:text/html\pirnt n\n"; print <<EOF; <body bgcolor="pink"> <font size="4"> 入力値をファイルに書込みました。<br> </font> EOF exit; ______________________ 宜しくお願いします。

    • ベストアンサー
    • CGI
  • $.postとPerlのデータ受け渡しについて

    現在、 $.postを使ってPerlにリクエストを送り、帰ってきた値を表示するという事をしたいのですが、Internal Serverエラーとなりますが、どこにエラーがあるのかがわからない状態です。 実行権限などは与えています。 以下に書いたプログラムを貼りますので、間違いがありましたら是非教えていただきたいです。 HTML index.html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Test Page</title> <script type="text/javascript" src="../lib/jquery/jquery-1.3.2.js"></script> <script type="text/javascript" src="./JS/test.js"></script> </head> <body> <form id="form01"> <input type="text" name="title" id="title01" value="post"><br> <input type="button" value="post" onClick="getValue()"> </form> <div id="res_title"></div> </body> </html> JavaScript test.js function getValue(){ //フォームのデータ取得 var pos_title = $('#title01').attr('value'); //var comment = $('#comment').attr('value'); //フォームデータのPOST送信+コールバック $.post("./cgi-bin/post.pl", {"title" : pos_title}, disp); } function disp(data){ $('div#res_title').html(data); } Perl post.pl #!/usr/bin/perl -w use strict; use warnings; my $formdata; if ($ENV{'REQUEST_METHOD'} eq "GET") { $formdata = $ENV{'QUERY_STRING'}; } else { read(STDIN, $formdata, $ENV{'CONTENT_LENGTH'}); } return $formdata;

  • 正規表現

    パラメータqの部分にマッチさせる正規表現が分かりません。 # $urlの例 http://foo.bar/?q=hoge?&x=0&y=0 http://foo.bar/?q=perl http://foo.bar/?q=perl+%e6%ad%a3%e8%a6%8f%e8%a1%a8%e7%8f%be hoge, perl, perl+%e6%ad%a3%e8%a6%8f%e8%a1%a8%e7%8f%beだけを切り出したいのですが、現状は # hogeしかマッチしない  $url =~ /\?q\=(.+?)&+?$/$1/; # 不要なパラメータにもマッチ  $url =~ /\?q\=(.+?)&*?$/$1/; # => hoge?&x=0&y=0 となっています。 よろしくお願いします。

    • ベストアンサー
    • Perl

専門家に質問してみよう