トップページ⇒php
1001コメント327KB

Perl 初心者コーナー Part21

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん03/03/18 18:47ID:Dujz7IUF
いらっしゃーい、Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。

1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。

最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。


CGIだけど、なんか質問ある? Part 9
http://pc.2ch.net/test/read.cgi/php/1041530204/
参考書籍の話題は、【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
0002nobodyさん03/03/18 18:47ID:???
[過去ログ]
Part1 http://tako.2ch.net/test/read.cgi?bbs=perl&key=957208980 参照不能
 DAT: http://tako.2ch.net/perl/dat/957208980.dat
Part2 http://tako.2ch.net/test/read.cgi?bbs=perl&key=971817087 参照不能
 DAT: http://tako.2ch.net/perl/dat/971817087.dat
Part3 http://tako.2ch.net/test/read.cgi?bbs=perl&key=979894521 参照不能
 DAT: http://tako.2ch.net/perl/dat/979894521.dat
Part4 http://tako.2ch.net/test/read.cgi?bbs=perl&key=984430156 参照不能
 DAT: http://tako.2ch.net/perl/dat/979894521.dat
Part5 http://pc.2ch.net/php/kako/988/988728069.html
Part6 http://pc.2ch.net/php/kako/996/996075607.html
Part7 http://pc.2ch.net/php/kako/1000/10002/1000267444.html
Part8 http://pc.2ch.net/php/kako/1003/10039/1003900311.html
Part9 http://pc.2ch.net/php/kako/1009/10095/1009549309.html
Part10 http://pc.2ch.net/php/kako/1014/10145/1014556702.html
Part11 http://pc.2ch.net/php/kako/1017/10172/1017201229.html
Part12 http://pc.2ch.net/php/kako/1019/10199/1019917048.html
Part13 http://pc.2ch.net/php/kako/1022/10227/1022731565.html
Part14 http://pc.2ch.net/php/kako/1026/10269/1026977659.html
Part15 http://pc.2ch.net/php/kako/1028/10288/1028816385.html
Part16 http://pc.2ch.net/php/kako/1032/10320/1032070299.html
part17 http://pc.2ch.net/php/kako/1034/10345/1034583844.html
part18 http://pc.2ch.net/php/kako/1037/10377/1037797479.html
part19 http://pc.2ch.net/php/kako/1042/10422/1042260745.html
part20 http://pc.2ch.net/php/kako/1042/10422/1042260745.html (タイトルに19と誤記)

[ひまぢん氏のミラー]
Part1 http://www.angelfire.com/ak5/2ch-web-program/kako/957208980.html
Part2 http://www.angelfire.com/ak5/2ch-web-program/kako/971817087.html
Part3 http://www.angelfire.com/ak5/2ch-web-program/kako/979894521.html
Part4 http://www.angelfire.com/ak5/2ch-web-program/kako/984430156.html
Part5 http://www.angelfire.com/ak5/2ch-web-program/kako/988728069.html
0003nobodyさん03/03/18 18:48ID:???
[総合]
 ・Perl Com: http://www.perl.com/pub/
 ・CPAN.com: http://search.cpan.org/
 ・ActivePerl: http://www.activestate.com/
 ・CGI-ML:http://forest.ne.jp/cgi-ml/

[お薦め]
 ・Perlメモ: http://www.din.or.jp/~ohzaki/perl.htm ★読んどけ
 ・Perl Recipes: http://www.effectiveperl.com/recipes/
 ・Randal's WebTechniques columns: http://www.stonehenge.com/merlyn/WebTechniques/
 ・Perlの部屋: http://www.cc.rim.or.jp/~midorin/mad-p/perl/index.html
 ・Perl初心者の部屋:http://www.harukaze.net/~mishima/perl/
 ・Perlリファレンス:http://www.big.or.jp/~mio/ga/pl/plref/pl_ref.htm
 ・Perlのページ:http://homepage1.nifty.com/nomenclator/perl/
0004nobodyさん03/03/18 18:48ID:???
[Document&Tutorial]
 ・Perl News: http://www.news.perl.org/
 ・Perl Monks: http://www.perlmonks.org/
 ・use Perl; : http://use.perl.org/
 ・Learn Perl - Perl Education: http://www.devdaily.com/perl/edu/index.shtml
 ・Perldoc.com: http://www.perldoc.com/
 ・Using Perl5 in Web: http://docs.rinet.ru/Using_Perl5_in_Web/
 ・Rex Swain's Home Page: http://www.rexswain.com/
 ・Robert's Perl Tutorial: http://www.netcat.co.uk/rob/perl/win32perltut.html
 ・Perl Tuts: http://savage.net.au/Perl-tutorials.html
 ・Beginning Perl Tutorials: http://www.pageresource.com/cgirec/index2.htm
 ・jcode.pl の私的な解説書: http://www.mikeneko.ne.jp/~lab/kcode/jcode.html
 ・Logical Choice Software, Home Page: http://www.logsoft.com/perltips/
 ・Perlfect Solutions: http://perlfect.com/
 ・The Perl Archive : http://www.perlarchive.com/
 ・Perl6 & Parrot VM についての情報: http://dev.perl.org/perl6/
 ・use Object; : http://perl.infoware.ne.jp/
0005nobodyさん03/03/18 18:48ID:???
ずざー
0006nobodyさん03/03/18 18:54ID:???
Part20 のURL間違ってた。ごめんなさい。

Part20 http://pc2.2ch.net/test/read.cgi/php/1044717887/ (タイトルに19と誤記)
0007nobodyさん03/03/19 01:13ID:0vdjLWGs
さっそくなんですが、i-modeでUser-Agentを利用して機種別に行くページを振り分けようと思って
#!/usr/local/bin/perl
$ua = $ENV{'HTTP_USER_AGENT'}

if( $ua =~ /^DoCoMo/2.0 N2051(c100;TB)){
print "Location: ../matiuke/jpg/176x198/\n\n";
}else( $ua = ~{
print "Location: ../\n\n";
}

exit(0);
という風に打ったのですが
No Outputと出てしまいお手上げ状態です
・・・
はっきり言ってperlを書くのは初めてなのでまったくといっていいほど初心者です。
ttp://www.nttdocomo.co.jp/mc-user/i/spec/useragent.html
携帯別User-Agent表です。
よろしくお願いします。
0008nobodyさん 03/03/19 01:18ID:???
>>7
}else( $ua = ~{
ってなによ・・・
0009nobodyさん 03/03/19 01:44ID:???
>>7
if( $ua =~ /^\QDoCoMo/2.0 N2051(c100;TB)\E/){
print "Location: ../matiuke/jpg/176x198/\n\n";
}elsif( $ua = ~/\Qayaya\E/){
print "Location: ../hoge/hoge\n\n";
}else{
print "Location: ../\n\n";
}

文法コウゾウを理解したほうがよいかと
0010nobodyさん03/03/19 01:53ID:???
>>7
UAは末尾まで丸々いるわけ?
そんなに細かく分岐させるの?
DoCoMoの6文字だけか1.0とか2.0までとか・・・

どこかで振り分けCGIを落としてきて使ったほうがいいんじゃないの?
0011nobodyさん03/03/19 02:07ID:DZ7fCmeZ
真似だな。ぽまえ。
>7
細かすぎだろ?

0012nobodyさん03/03/19 02:13ID:EytPlHC0
ttp://query.s3.xrea.com/active/index.html

みたいなのを自分流に作ってみたいのですが参考になるサイト
参考になるプログラムみたいなのってありませんか?
0013nobodyさん03/03/19 02:22ID:???
>>12
そうやって質問を装ってブラクラを貼る馬鹿がいるので、できるだけ
文章で詳しく書いて欲しい。
0014nobodyさん03/03/19 02:45ID:???
>>7
一応突っ込んどくと、 Locationヘッダにパス指定はNG。
ttp://www.studyinghttp.net/rfc_ja/2616/sec14.html#sec14.30
001512 ◆GsKnKxmx8s 03/03/19 02:59ID:???
>>13
2ch研究さんのアクティブスレッドランキングなのですが
非常に使えるので自分流に改造したいとおもいまして
zenhiteiさんにご相談したところ、ご自由にどうぞとのことだったのです

で、perlをするにしても、あのプログラムの参考になるサイトすら
わからない状態でしたのでここの方々に指示を仰ぎたいなと思い
伺いました。

0016nobodyさん03/03/19 05:33ID:X4k10DxJ
正規表現でマッチした回数を調べるにはどうすれば良いのでしょうか?
$hoge = 'hoge hoge hoge';
$hoge =~ s/hit/hoge/g;
↑の処理で置換した回数を知りたいです。
お願いします。
0017nobodyさん03/03/19 05:36ID:X4k10DxJ
ウゲ!!
$hoge = 'hoge hoge hoge';
$hoge =~ s/hoge/hit/g;
です。。。
0018nobodyさん03/03/19 05:39ID:???
$moge = $hoge =~ s/hoge/hit/g;
00191603/03/19 05:42ID:X4k10DxJ
できました!
こんな時間にこんなに早くレスもらえるとは思わなかったです!
どうもありがとうございました。
0020nobodyさん03/03/19 10:19ID:???
perlで作成したHTMLファイルを保存させたくて
今はVBSでやってますがあまりうまくないんで、
何かいい方法ないでしょうか?
0021nobodyさん03/03/19 10:36ID:???
>>20
ちゃんとしたやつをPerlで組む
0022nobodyさん03/03/19 11:25ID:???
>>21 は >>20 の日本語を理解できたの?
0023nobodyさん03/03/19 12:08ID:WfwFmo2+
質問です。
Data::Dumper より速いという Storable を使いたいのですが
うまくいきません。お使いの方、教えてください。
Storable.pm は CPAN より入手しております。
0024nobodyさん03/03/19 12:15ID:???
>>23
どう使いたいのかわからんけど
とりあえずドキュメント
http://perldoc.jp/docs/modules/Storable-2.05/Storable.pod
00252303/03/19 12:27ID:???
use する以前に autosplit.ix がないと言われて、
で AutoSplit にてモジュールを分解して、 autosplit.ix などが
生成されたのですが、結局エラーになってしまいました。

用途は Data::Dumper のように変数をファイルに保存する事です。
00262103/03/19 12:42ID:???
>>22
20がやりたいことがよく分からんが
mimetypeを  application/octet-stream
とかにすればできるんじゃないの?
0027nobodyさん03/03/19 12:49ID:???
>>26
やりたいことがわからんのに、できるって言っちゃうのもどーかと
0028703/03/19 13:12ID:0vdjLWGs
>>8-14
ご指摘ありがとうございます。
1から勉強しなおしてきます。
0029nobodyさん03/03/19 13:37ID:???
>>25=23
インストールに失敗してる可能性高し。
環境は?
0030 ◆hMJAPH9PWA 03/03/19 14:54ID:???
>>25
ビルドすらしていない可能性高し。
makeした?
0031nobodyさん03/03/19 19:17ID:TkOxs7rI
print 10.1-1;
で結果が0.000000000000096

みたいな感じになるんですがこれってバグですか?
0032nobodyさん03/03/19 19:25ID:???
>>31
仕様。実用上あまり問題にならないはずだが
有効数字は自分で意識して書かないといけない。
小数は一桁で良いのなら、表示はこうする。
printf "%.1f", 計算結果;
0033nobodyさん03/03/19 21:52ID:???
>>31
どっか壊れてない?
0034T女の竹田03/03/19 22:31ID:???
>>31
一瞬>>32みたいなこと思ったけど、よく読むと結果が一兆分の一ぐらいになってるじゃん。

10.1-10で0.0999999999999996になったけど、このことかな?

これは詳しく話すと浮動小数点がどうとかって話になるけど。
0035nobodyさん03/03/20 01:03ID:jX8BFx3L
馬鹿げた質問で申し訳ないのですが
print "あいうえお";
print "かきくけこ";
print "さしすせそ";
これをまとめて書く方法ありませんでしたっけ?


????????????
あいうえお
かきくけこ
さしすせそ
???????????
こんな感じの関数があった気がするんですが・・・
0036nobodyさん03/03/20 01:16ID:???
関数というか、
print "あいうえお\nかきくけこ\nさしすせそ\n";
じゃだめなのん?
print join("\n",@array);
とかかなぁ...
0037nobodyさん 03/03/20 01:25ID:???
print <<EOF;
あいうえお
かきくけこ
さしすせそ
EOF

コレの事?
0038nobodyさん03/03/20 01:39ID:???
>>37
おお、これですこれです
ありがとうございました
0039nobodyさん03/03/20 13:03ID:???
user,passを元にFTPサーバへアクセスして
ある条件の名前のファイルを取り出す・・・
というのをperlでやることは可能でしょうか?
0040nobodyさん03/03/20 13:19ID:???
可能です。
ちったー検索しろ。
00412003/03/20 15:08ID:???
>>26 (=>>21)
フォームの値からHTMLを出力して
そいつをCGI実行時に、ブラウザで表示せずに直接ダウンロードさせたかったってことなんですが
(なんか言い回しがややこしくなりますね…)

application/octet-streamで調べたらこれが見つかりました
http://tohoho.wakusei.ne.jp/lng/200003/00030606.htm
どうやら確実に動作しないようですね

#うちの環境でもMIMEType変更してもIEが強制表示しちゃいました

レスクスコ
0042nobodyさん03/03/20 15:31ID:???
>>39
perldoc Net::FTP
入ってなかったら入れてくれ。

>>41
確実なのは、メールで送る。
0043nobodyさん03/03/20 17:33ID:gyHuovPa
ド素人な質問ですが、ttp://www2.snowman.ne.jp/~nnet/ にある
テキスト広告用CGIを使うために
掲示板スクリプトの2行目に require "randbbs.cgi";を
付け足したらエラーになるんです。randbbs.cgiはちゃんと
存在するんですが、何がいけないんでしょうか?
00444303/03/20 17:35ID:gyHuovPa
訂正です。テキスト広告用CGIではなく
「広告配信CGIのランダムTEXT広告配信CGI」でした。
0045nobodyさん03/03/20 17:41ID:???
じゃあ、require〜 の一文を消したら動くの?
00464303/03/20 18:05ID:gyHuovPa
>>45
はい。普通の掲示板のCGIなんで。
0047nobodyさん03/03/20 18:07ID:???
>>43
そのCGI設置ページの説明(動かんときの対処法)はひととおり試してみた?

あとさあ、ここPerlスレなんだが。なんでCGIの質問するのよ?
0048nobodyさん03/03/20 18:10ID:???
>>47
聞くまでもなかろう。
00494303/03/20 18:18ID:gyHuovPa
>>47
対処法はひとつだけ書いてあるんですが、だめでした。
パーミションやディレクトリの位置なんかもいろいろ試したんですが。
というかこれってPerlの話じゃないんですか?
違うんだったらやめます。ごめんなさい。
0050nobodyさん03/03/20 18:32ID:???
>>43
>掲示板スクリプトの2行目に require "randbbs.cgi";を
              ~~~~~~
0051nobodyさん03/03/20 23:07ID:???
>>49
色々つっこみどころが多いな……

>対処法はひとつだけ書いてあるんですが、だめでした。
その方法を試したのか、試してないのか。
ダメならダメでどのようにダメだったのか。
これらの情報が全く含まれていない。

>パーミションやディレクトリの位置なんかもいろいろ試したんですが。
どう試したのか。
やはりこれも情報がない。

>というかこれってPerlの話じゃないんですか?
このスクリプトはPerlで書かれているが、PerlはCGIのためだけの言語ではない。
なお、CGIには専用のスレッドがある。

最後に一番大きなつっこみを。
なんで2chで聞く? まず作ったところ(作った人間)に聞くのが筋だろうに。
0052nobodyさん03/03/21 03:15ID:???
変数を変数名として使う場合(?)
$text = "テキスト";
$name = "text";
print "$$name";
でできるのですが、$textがmyで宣言されていると
これでは表示されなくなってしまいます。
解決法は無いでしょうか・・?
0053nobodyさん 03/03/21 03:27ID:???
>>52 $$name はリファレンスに取られかねないからハッシュを使うほうが賢いと思われ
%text = ('test'=>'テキスト');
$name = 'test';
print $text{$name};

みたいな・・・
0054nobodyさん03/03/21 03:50ID:???
すみません;;
${$name}と訂正しておきます。
>53の説明していただいた方法も考えたのですが、
頑固ですが、変数名には変数は使うのはむづかしいでしょうか(T_T)?
00555403/03/21 03:54ID:???
書いたばっかりですみません、
ハッシュを使う方向でやってみる事にしました。
00565303/03/21 04:00ID:???
>>54 ${$name} それ、リファレンスの記述そのものですが・・・
0057nobodyさん03/03/21 06:25ID:???
$sousa01=(捜査1課の名簿がHTMLのデータで書かれてます);
$sousa02=(捜査2課の名簿がHTMLのデータで書かれてます);
     〜
$sousa99=(捜査99課の名簿がHTMLのデータで書かれてます);

<input type=radio name="kenkei" value="sousa">捜査
<input type=radio name="sousa" value="01">捜査1課<br>
<input type=radio name="sousa" value="02">捜査2課<br>
     〜
<input type=radio name="sousa" value="99">捜査99課<br>

name="kenkei" の value="sousa"と name="sousa" の value="01"をくっ付けて、
変数$sousa01とするにはどうしたらよいのでしょうか?
0058nobodyさん03/03/21 08:33ID:???
>>57
データ構造が思いっきり糞。
ハッシュ使え、ハッシュを。

$data{sousa}{1} = 捜査一課の情報;
みたいにすれ。
00595303/03/21 08:34ID:???
>>57
まず配列にする事ですな・・・

$sousa[1]=(捜査1課の名簿がHTMLのデータで書かれてます);
$sousa[2]=(捜査2課の名簿がHTMLのデータで書かれてます);
     〜
$sousa[99]=(捜査99課の名簿がHTMLのデータで書かれてます);

で、帰ってきたform文が%FORMに入るとした場合

$sousa[$FORM{'sousa'}]

で解決


0060nobodyさん03/03/21 11:34ID:???
>>53
Only package variables (globals, even if localized) are
visible to symbolic references. Lexical variables
(declared with my()) aren't in a symbol table, and thus
are invisible to this mechanism.
0061nobodyさん03/03/21 14:55ID:???
eucのファイルをsjisに変換したいんだけど

「読み書きモードでファイル読んでコード変換して
元のファイルにsjisで書き込む」

このやりかた以外にもっと効率的な方法知ってたら教えてください
0062nobodyさん03/03/21 15:16ID:???
>>61
ファイルを変換するならそれしかないでしょ
00632003/03/21 17:35ID:???
>>42
おおおお
そいつはいいアイデアかも
それでやってみます
00646103/03/21 17:55ID:???
sjis→euc変換し、テンポラリに書き込むロジックで
改行のCRLFをLFに変換したいのですがうまくいきません。
\xaを書き込んでもCRLFになってしまいます。
どなたか教えてください。

require "jcode.pl";
open(FH,"< a.txt");
@a=<FH>;
&jcode::convert(\$_, "euc","sjis") foreach (@a);#sjis→euc
close(FH);
open(FH,"> tmp.txt");
foreach(@a){
chomp;
print FH "$_","\xa";#←ここです
}
close(FH);
0065nobodyさん03/03/21 18:11ID:???
binmode(FH);
00666403/03/21 18:22ID:???
>>65
ありがとうございます。うまくいきました。
自動にLF→CRLF変換してしまうのを
binmode(FH);で防ぐんですね。

open(FH,"> tmp.txt");
binmode(FH);#←ここに追加
foreach(@a){
chomp;
print FH "$_","\xa";
}
close(FH);
0067nobodyさん03/03/21 18:42ID:x5txFKZl
下の例以外でディレクトリ内のディレクトリ一覧を得るような
スマートな書き方は無いでしょうか?お願いします。

foreach ( readdir(DIR) ) {
 next if (/^\.\.?$/);
 push @hoge,$_ if ( -d "$_" );
}
0068nobodyさん03/03/21 18:57ID:???
@hoge = grep { -d $_ } glob("./*");
0069ミツマじゃぱん03/03/21 18:59ID:CvSagfqM
貴方は or || どっち派?
どうでもいいんですけどね。
0070nobodyさん03/03/21 19:06ID:???
>>68
スマートです!どうもありがとうございました。
>>69
||派に一票。
0071nobodyさん03/03/21 19:12ID:???
>>69
おいらはor派。
|| は、ビット演算子の | とまぎらわしい。
orは優先順位が最低になってるのも理由のひとつ。
0072nobodyさん03/03/21 19:17ID:???
>>69
俺はorを使ってる。
oとrがビジュアル的に「小さくてささやか」なのが好みに合ってるから
・・・ってのは、ネタのようだけど結構本気な理由。
00735703/03/21 19:33ID:???
>>59
データを配列に書き換えました。
OKです。
ありがとうございました。

>>58
%kenkei = ("sousa1" => "捜査1課" , "sousa2" => "捜査2課");
って言う風に書き換えました。
$kenkei{'sousa1'}なら捜査1課と出るんッスが、
$kenkei{'sousa$sousa'}だとundefッス。
$sousaの値は1です。
後学のために、房な所教えてくだせぇ〜
0074nobodyさん03/03/21 19:39ID:???
>>73
$kenkei{"sousa$sousa"}だと出るはず。
''の中では変数展開が行われないんだよ。
00757303/03/21 20:47ID:???
>>74
出来ました。
ありがとうございました。
勉強になりました。
0076nobodyさん03/03/21 21:34ID:???
私もor派だなぁ。
深い意味は無く、ヴィジュアルで(笑)
0077nobodyさん03/03/21 23:05ID:???
||とor。
優先順位が大幅に違うので要注意。
(orは最下位)
0078nobodyさん03/03/21 23:10ID:???
$a = ($b or $c);
$a = $b || $c;

open FH, "file" or die;
open(FH, "file") || die;
0079nobodyさん03/03/21 23:52ID:???
優先順位とか良くわからないんだけど
片方固定でしか使わない場合は関係ないの?
0080nobodyさん03/03/22 00:24ID:???
>>79
優先順位は他の演算子との関係を考えないと
0081nobodyさん03/03/22 00:25ID:???
>>79
1+2*3 の答えを、9と答えるか7と答えるかほどの違いがある。
0082nobodyさん03/03/22 06:32ID:V7CC4FvX
初心者質問ですみません。

下記の用に、タイムアウト時にバッククォートで囲った処理を
killしたいのですが、どうやっていいのか困惑してます。
良い方法がありましたら、ご指導いただければと思っております。


eval {
local $SIG{ALRM} = sub { die "timeout" };
alarm 10;

$tmp = `処理`;

alarm 0;
};
alarm 0;
if($@) {
if($@ =~ /timeout/) {# タイムアウト時

# 行った処理のプロセスを切る処理

}
}
0083nobodyさん03/03/22 06:43ID:???
1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。

1:ちょっと大きいCGIなので、負荷を軽くしたい。(CGIです)
2:実行全体にロックをかけて、同時刻に複数人数が処理できないようにしてみたが…
3:それだと、本当に負荷が軽減されてるのか確かめようがなかった。

同時に実行されてない場合は、ちゃんと軽減されてますか?
0084nobodyさん03/03/22 07:29ID:35k142Il
正規表現にはまってしまいました。
どこのサイトを見ても、
{n, m} n回以上m回未満にマッチ
と書いてあるのに、
my test = 'affaaffaaafaaaafaaaaafaaaaaafffaf';
$test =~ s/a{2, 5}/X/g;
print $test."\n";
としても、$testは全く変化しません。
なぜでしょうか?
00858403/03/22 07:31ID:35k142Il
>my test = 'affaaffaaafaaaafaaaaafaaaaaafffaf';
もちろん、
my $test = 'affaaffaaafaaaafaaaaafaaaaaafffaf';
の間違いです。
0086nobodyさん03/03/22 07:36ID:???
my ($test) = 'affaaffaaafaaaafaaaaafaaaaaafffaf';
じゃねーの?
0087nobodyさん03/03/22 07:38ID:???
>>84
my $test = 'affaaffaaafaaaafaaaaafaaaaaafffaf';
$test =~ s/a{2,5}/X/g;  ←{ }の中にスペース入れちゃダメ
print $test."\n";
00888403/03/22 07:39ID:35k142Il
>>84
my $test = 'hoge';
は問題ないず。
my $hoge, $foo = split(/\./, 'hoge.foo');
は、
my($hoge, $foo) = split(/\./, 'hoge.foo');
と書く必要があると思いますが。
どうでしょう?
00898603/03/22 07:40ID:???
かぶったね。

ん〜。なんでだろ。分からん。
ちなみに、この記述はperl5未満では使えないよ。
00908403/03/22 07:40ID:35k142Il
>>87
うお、できました。
スペースは無しでしか..
ありがとうございました。
0091nobodyさん03/03/22 07:41ID:???
>>88

× my $hoge, $foo = split(/\./, 'hoge.foo');
○ my($hoge, $foo) = split(/\./, 'hoge.foo');
00925303/03/22 08:54ID:???
>>84
>my test = 'affaaffaaafaaaafaaaaafaaaaaafffaf';
$test だろ $抜けとる・・・・
0093nobodyさん03/03/22 10:28ID:???
>83
同時実行されていない場合は、ロック処理の分負荷は増えている。

で、この部分は読んでないのかな?
>いらっしゃーい、Perlの"コーディング"で困ってる人のスレです。
0094nobodyさん03/03/22 16:05ID:???
>92
一部だけ読んで適当に返事するのイクナイ
0095nobodyさん03/03/22 16:40ID:???
>>82
パイプつきoopenでPIDを取得しておいて、必要に応じてkill関数で殺す
…と思ってやってみたらうまく行かなかった(お。
0096nobodyさん03/03/23 08:51ID:???
<input type="checkbox" name="sakana" value="あじ">あじ
<input type="checkbox" name="sakana" value="たい">たい
<input type="checkbox" name="sakana" value="ひらめ">ひらめ
<input type="checkbox" name="sakana" value="かつお">かつお
<input type="checkbox" name="sakana" value="まぐろ">まぐろ

で、複数選択しても、最後の値しか来ないのですが、どのようにすればよいのでしょうか?
cgi-lib.plを使い、
@arrey = &SplitParam($FORM{'sakana'});でやってみました。

フォームデータの取得は以下の通り
sub form {
if ($ENV{'REQUEST_METHOD'} eq "POST") {
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
}
else {
$buffer = $ENV{'QUERY_STRING'};
}
@pairs = split(/&/,$buffer);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

$FORM{$name} = $value;
}
}

$nameがsakanaで同じだから上書きされているんだと思うのですが、どう回避していいのかわかりません。
0097nobodyさん03/03/23 09:01ID:???
>>96
ひとつ。それのどこがPerlの話なんだ?
ふたつ。cgi-lib.plを使っておきながら、自前でデコード処理してんのか? もしそうならとんでもないヴァカだな。

解決策
・CGIのことはCGIのスレに行け。
・cgi-lib.plの最新バージョンとその正しい使い方を学べ。
これで解決。
0098nobodyさん 03/03/23 09:08ID:???
>>96
>で、複数選択しても、最後の値しか来ないのですが、どのようにすればよいのでしょうか?
ハッシュのキーが値が上書きされるからそうなります。

<input type="checkbox" name="sakana0" value="あじ">あじ
<input type="checkbox" name="sakana1" value="たい">たい
<input type="checkbox" name="sakana2" value="ひらめ">ひらめ
<input type="checkbox" name="sakana3" value="かつお">かつお
<input type="checkbox" name="sakana4" value="まぐろ">まぐろ

等とやって処理を考えないと駄目
0099nobodyさん 03/03/23 09:09ID:???
>>97一応perlでしょ・・・ハッシュの扱いの問題だし
0100nobodyさん03/03/23 09:34ID:???
>>96
checkboxは、複数選択すると

sakana=あじ&sakana=たい&sakana=まぐろ

みたいに同じnameが複数来るんだよ。
これが分かればあとはなんとかできるでしょ。
01019603/03/23 09:50ID:???
>>97-100
解決しますた。
特に>>97さん、&ReadParse;で桶でした(滝汗)

===以下言い訳===
最初はcgi-lib.pl使ってなかったんだが、複数選択が必要になり、ぐぐったらcgi-lib.plの&SplitParamでできるってので使い始めたわけ。
ヴァカでした。
CGIとPerlの区別も含めて
■ このスレッドは過去ログ倉庫に格納されています