Perl 初心者コーナー Part22
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
03/04/15 10:15ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
CGIだけど、なんか質問ある? Part 10
http://pc2.2ch.net/test/read.cgi/php/1048686475/
参考書籍の話題は、【Perl,CGI】参考書籍 第三版
http://pc.2ch.net/test/read.cgi/php/1030209573/
その他の雑多な話題は、【CGIに依存しないPerlの話題一般/Part2】
http://pc.2ch.net/test/read.cgi/php/1030548610/
スクリプトの改造依頼は、【 スクリプト改造工房 PART 6 】
http://pc2.2ch.net/test/read.cgi/php/1047806915/
過去ログやお勧めサイトは >>2-10
0065nobodyさん
03/04/17 00:33ID:???.plで動けば.plでいいじゃない?
0066はしのえみ好きー
03/04/17 00:34ID:???漏れ年上でかつ可愛い人が好き。はしのえみは理想だな。
>>64
スレ違い。ここははしのえみについて語るスレです。
Webサーバの設定で、拡張子".cgi"というファイルのリクエストを受けるとそれ用に処理するようになってる。
だから、設定によっては".pl"でもOKな時もある。
どっちにしろ".cgi"にしておけば安心。ファイル名を変えるだけでOKよ。
0067nobodyさん
03/04/17 00:36ID:???0068nobodyさん
03/04/17 00:38ID:???0069nobodyさん
03/04/17 00:55ID:???型グロ部ってイマイチ何かよくわかりません。
とあるCGIをDLして、それを解読中なのだが、
たとえば、
*option_pnt = $_[0];
*config_pnt = $_[1];
$ctl_sock = $config_pnt{"ctl_sock"};
$before = $option_pnt{"before"};
$after = $option_pnt{"after" };
$path = $option_pnt{"path" };
&jcode'convert(*before,"sjis");
&jcode'convert(*after ,"sjis");
&jcode'convert(*path ,"sjis");
のような部分があるのですが、
漏れ敵には、文脈に応じて柔軟に型を識別してくれるもの
くらいの認識なのですが、いまいちシックリきません。
どんなときに型グロ部使うと激ウマーなのか、どなたかご教授ください。
0070nobodyさん
03/04/17 00:59ID:qoz0Pxr2いやてっきりPerlプログラムをコンパイルしているのかと思っていたから。
サンクスみんな
ついでにいうと63=64=俺や。
どうでもいいがな。
オマエがすれ違いやで。
0071nobodyさん
03/04/17 01:02ID:???圧縮しないときはtxtにしてるところが多いね。
cgiだと多くの場合、実行されちゃうから。
0072nobodyさん
03/04/17 01:07ID:???CGIの話はCGIスレに。
0073nobodyさん
03/04/17 01:07ID:qoz0Pxr2そうなんすか。ありがとう
助かった。俺の勘違いだったらしいすべてがね。
まじありがとうさようなら
0075nobodyさん
03/04/17 03:15ID:???型グロブを理解したかったらシンボルテーブルの勉強。
http://www.kt.rim.or.jp/~kbk/perl5.doc/perlmod.html
標準モジュールの Symbol.pm や、IO::なんちゃらってのも
参考になるよ。
まぁ Perl4 と違い、リファレンスが使える Perl5 では
型グロブを使っておいしい場面って減った。強いて挙げるなら
サブルーチンにデカいデータを渡す時ぐらいかな。
my %orig_hash = qw(...); # デカいハッシュ
my @orig_array = qw(...); # デカいリスト
hoge(\%orig_hash, \@orig_array);
sub hoge {
no strict 'vars';
local(*hash, *array) = @_;
# %orig_hash を直接書き換える
# デリファレンスしなくて済むので高速
$hash{$_} = uc $hash{$_} for @array;
}
0076nobodyさん
03/04/17 06:45ID:???print "Content-type: text/html\n\n" if(select == *STDOUT);
0077nobodyさん
03/04/17 07:29ID:???*PI = \3.14159265358979;
最適化出来ないらしいんだけどね
0078山崎渉
03/04/17 11:58ID:???0080nobodyさん
03/04/17 18:22ID:???.plファイルで中身をpackage abc;として、&abc::abc; と呼び込むのと
.cgiにして require'./aaa.cgi';して &abc; と呼び込むのでは
どちらがよいのでしょうか?
何か違いがあるのでしょうか?
0081nobodyさん
03/04/17 18:43ID:???requireするなら、拡張子は関係ないが……
.plファイルだって、packageせずmainパッケージに読み込めば後者のように使えるし。
0082nobodyさん
03/04/18 00:39ID:fDlmNlyHありがとう。勉強してみます。
008329
03/04/18 00:58ID:???動かない動かないと色々試行錯誤してやっと意味がわかりました。
PHPで書いたらあっさり出来ました。
他にも色々便利なコマンドが山ほどあるので使って行こうと思います。
0084nobodyさん
03/04/18 11:25ID:5L+C97mW$x ~= s/abc(.*)xyz/`hoge $1`/g
の`hoge $1` って動的に展開してくれるんですか?
それとも、はじめに展開してそれっきりですか?
誰か教えて!!!
008684
03/04/18 12:07ID:???分かりずらくて御免なさい。
つまり、マッチした時点で、`hoge $1` を展開してくれるのか、
命令文を解釈するときに、`hoge $1` を展開しちゃうのか、どっちかなぁ?
と思って。
008784
03/04/18 12:10ID:???~= は、=~ の間違いです。
008984
03/04/18 12:28ID:???あ、そうか。
すいません、色々やってみたら、そもそも置換文字列は、コマンド展開されない
んですね。
はぁ〜。面倒になる予感。
0092nobodyさん
03/04/18 15:15ID:???PHPのnl2br(改行を<br>に置換)を自作しようとして、
sub nl2br{
my ($letter) = $_[0];
$letter =~ s/\r\n/<br>/g;
$letter =~ s/\r/<br>/g;
$letter =~ s/\n/<br>/g;
return $letter;
}
を作ったのですが、
これだと、
print nl2br($sentence); としても動かず、
$sentence = &nl2br($sentence);
print $sentence;
としないと動きません。これを、前者のようにするには、関数をどうつくればいいのでしょう?
0096nobodyさん
03/04/18 17:54ID:???0097nobodyさん
03/04/18 19:57ID:???jcode::convert(\$buffer, 'euc'); とするのと
&jcode'convert(\$buffer, 'euc'); とするのでは
どう違うのでしょうか?
0098nobodyさん
03/04/18 20:42ID:???grep( /^$hoge$/, @hage );
@hageの中に'+1'つー文字列があったとして
$hogeが'+1'つー文字列だと、マッチしません。
$hogeを'1'にしてやればマッチします。
これを変な小細工しないで、文字列としてマッチさせる方法はないでしょうか?
0099nobodyさん
03/04/18 21:00ID:???で駄目か?
0100nobodyさん
03/04/18 21:17ID:???Perl4の頃はリファレンスが無かったので型グロブで代用してた。
また、パッケージデリミタには ' が使われていた。サブルーチン
を呼び出す際には & が必ず必要だった。なので
&jcode'convert(*buffer, 'euc');
という書き方をしていた。
Perl5では互換性の為に上記の文法を許容するけど、推奨される
今風の書き方は
jcode::convert(\$buffer, 'euc');
になる。更に言うなら jcode.pl よりは Jcode.pm を、Jcode.pm
よりは Perl 5.8.0 から標準になった Encode モジュールを
使った方がいい。
0102nobodyさん
03/04/19 01:55ID:???どこかで記憶が変わってしまってました。
激しく鬱だ。。
0103102
03/04/19 02:00ID:???すみませんでした。
0104102
03/04/19 02:07ID:???http://pc.2ch.net/php/kako/1019/10195/1019561283.html
↑の551番さんが550番さんに書いた事でした。
お騒がせしました。
0106nobodyさん
03/04/19 05:26ID:uaYurtrRにアクセスすると、
http://www.foo.com/cgi-bin/index.cgi
にアクセスした場合と全く同じ表示になるようにしたいのですが、
どうするのが得策なのでしょうか?
(要は、PHPでいうところの fopen("http://www.foo.com/cgi-bin/index.cgi") がやりたい)
0108106
03/04/19 12:37ID:EJZQKwDzあれ、Perlの話のつもりだったんだけど、そーでなかった?
とりあえず他スレ逝ってきます
0110nobodyさん
03/04/19 13:16ID:eaFpa2kJhttp://www.google.com/search?q=2%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB&ie=UTF-8&oe=UTF-8
なら、
=〜 tr/+/ /;
=〜 s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
でデコードできるですが、Googleで
http://search.yahoo.co.jp/bin/search?p=2%A5%C1%A5%E3%A5%F3%A5%CD%A5%EB
の場合は、どうすればよいのでしょうか?
どなたかご教授下さいm(_ _)m。
0111nobodyさん
03/04/19 13:17ID:???Perl的に言うなら、index.cgiの中身をhoge.plに移して、各index.cgiから
hoge.plをrequireするとか。
0112110
03/04/19 13:17ID:eaFpa2kJ0114nobodyさん
03/04/19 13:18ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
0115110
03/04/19 13:31ID:eaFpa2kJ早速のレス、ありがとうございます。
Unicodeの文字列をデコードするために参考になる
ページ等ありますでしょうか?
よろしくお願いします。
0116nobodyさん
03/04/19 14:16ID:???教えてもらったんだろ、
後はてめえで探せよノータリン!
0117117?
03/04/19 14:31ID:W+zt+CQTここに書いてあるとおりにcgiを設定しても動かないんですが
記述とか間違ってませんか? 詳しい人おしえて下さい。
0118nobodyさん
03/04/19 14:32ID:???ノータリンとノーリターン
http://www.google.com/search?num=100&hl=ja&ie=UTF-8&oe=UTF-8&c2coff=1&as_qdr=all&q=perl+Unicode%E3%81%AE%E6%96%87%E5%AD%97%E5%88%97+%E3%83%87%E3%82%B3%E3%83%BC%E3%83%89&lr=
0119115
03/04/19 15:04ID:JU0nnBeKどうもご親切にありがとうございました!
あちこち辿ってみます。
0121117
03/04/19 15:45ID:W+zt+CQT<FORM ACTION="http://hoge.ne.jp/jump.cgi">
<SELECT NAME="jumpto">
<OPTION VALUE="-" SELECTED>移動先を選択</OPTION>
<OPTION VALUE="http://www.yahoo.co.jp">yahoo</OPTION>
<OPTION VALUE="http://www.google.co.jp/">google</OPTION>
<OPTION VALUE="http://www.2ch.net/">2ch</OPTION>
</SELECT>
<INPUT TYPE="submit" VALUE="移動">
</FORM>
このように書いても動作してくれないのですが
何がいけないのでしょうか?cgi自体は問題なく
動いてるようです
0122nobodyさん
03/04/19 15:50ID:???そのCGIは一行目から間違ってるぞ
0124117
03/04/19 15:57ID:DRRtSmLAとくに問題はないと思うのですが
プルダウンメニューを携帯で使いたくて
cgiを探してやっとで見つけたのがこれなのですが
動作しないんです(>_<)
0125117
03/04/19 16:11ID:DRRtSmLA0126nobodyさん
03/04/19 16:11ID:???($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack('H2',$1)/eg;
if( $name eq "jumpto" ) {
$jumpto = $value;# 移動先
}
}
0127nobodyさん
03/04/19 16:12ID:???0128nobodyさん
03/04/19 16:15ID:SET3u/9L0129117
03/04/19 16:23ID:DRRtSmLAhttp://www.pp.iij4u.or.jp/~re-com6/0419/062-1.zip
http://www.rr.iij4u.or.jp/~co-com3/0419/062-2.zip
http://www.rr.iij4u.or.jp/~co-com3/0419/062-3.zip
http://www.rr.iij4u.or.jp/~co-com3/0419/062-4.zip
http://www.rr.iij4u.or.jp/~co-com3/0419/062-5.zip
田丸愛
http://www.hh.iij4u.or.jp/~re-com3/0418/061-1.zip
>>126さん
出来ないよ。。。
0130nobodyさん
03/04/19 16:24ID:???foreachの中に2行追加するんだぞ?
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack('H2',$1)/eg;
0131nobodyさん
03/04/19 16:29ID:???MPEGにしる!
0132117
03/04/19 16:32ID:???http://www.hh.iij4u.or.jp/~re-com3/0418/061-1.zip
http://www.hh.iij4u.or.jp/~re-com3/0418/061-2.zip
http://www.hh.iij4u.or.jp/~re-com3/0418/061-3.zip
上原里香
http://www.dd.iij4u.or.jp/~co-com4/0416/059-1.zip
http://www.hh.iij4u.or.jp/~co-com5/0416/059-2.zip
http://www.rr.iij4u.or.jp/~co-com6/0416/059-3.zip
もうダメぽ・・・ 意味不明、俺の就業時間もあとわずか、、、
今日は何もしてないや・・
0133nobodyさん
03/04/19 16:36ID:???いいなあ就職できて。
0134nobodyさん
03/04/19 17:05ID:???0137nobodyさん
03/04/19 21:51ID:???0138nobodyさん
03/04/19 23:43ID:???0139nobodyさん
03/04/20 00:07ID:???どう答えればいいんだ?
どこかのスクリプト落としてきてソースを見てください
ってとこか
0140nobodyさん
03/04/20 01:04ID:RhiZ2LD4>どう答えればいいんだ?
136参照
0142nobodyさん
03/04/20 01:14ID:???0143nobodyさん
03/04/20 01:21ID:???0144nobodyさん
03/04/20 01:30ID:???Perl初心者を大切にしようよ。
0145nobodyさん
03/04/20 01:34ID:???0146nobodyさん
03/04/20 01:39ID:???0147nobodyさん
03/04/20 01:42ID:???0148nobodyさん
03/04/20 01:51ID:???Perl初心者を大切にしようよ。
0149nobodyさん
03/04/20 01:58ID:???0151nobodyさん
03/04/20 02:33ID:???まず掲示板のフォームからCGIに画像ファイルを送るね。
そしたらCGIに画像ファイルが到着するとその画像を扱う処理をします、
(その処理はCGI_Lite.pm等を介して画像ファイルの名前やら大きさやら保存場所やら・・・ね。)
それで保存できてるから画像を表示するのであれば
保存したルート指定すれば表示されるわけですよ。
簡単な説明だけど理解してよ。もう来ないから。
やっぱPHPのほうが楽だな。
0152nobodyさん
03/04/20 02:41ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
0153nobodyさん
03/04/20 02:41ID:???ここはコーディングの初心者を相手にするスレだ。
0154nobodyさん
03/04/20 02:42ID:???0156nobodyさん
03/04/20 03:13ID:???0157nobodyさん
03/04/20 03:30ID:???ニヤニヤ(・∀・)
0158nobodyさん
03/04/20 03:34ID:???>まず掲示板のフォームからCGIに画像ファイルを送るね。
それをどうやってPerlで実現するんですか?初心者なので分かりません。
>そしたらCGIに画像ファイルが到着するとその画像を扱う処理をします、
>(その処理はCGI_Lite.pm等を介して画像ファイルの名前やら大きさやら保存場所やら・・・ね。)
CGI_Lite.pmって何ですか?
保存場所とは?マイドキュメントでいいんですか?
>>151
すみませんがもっと簡単に説明してもらえませんか?初心者なので・・・
>>142,>>144,>>148さんでもいいです。
0160nobodyさん
03/04/20 03:47ID:???そろそろ放置して寝るか。
0163nobodyさん
03/04/20 04:46ID:???放置プレーべ
0164山崎渉
03/04/20 05:57ID:???( ^^ )< ぬるぽ(^^)
■ このスレッドは過去ログ倉庫に格納されています