Perl コーディング初心者質問コーナー Part26
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
03/07/24 19:48ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
1: 自分はこう言う事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。
関連スレ
【Perl上級者コーナーPart01】
http://pc2.2ch.net/test/read.cgi/php/1024741312/
CGI: Common Gateway Interface part 11
http://pc2.2ch.net/test/read.cgi/php/1055597189/
【Perl,CGI】参考書籍 第三版
http://pc2.2ch.net/test/read.cgi/php/1030209573/
【 スクリプト改造工房 PART 6 】
http://pc2.2ch.net/test/read.cgi/php/1047806915/
過去ログやお勧めサイトは >>2-10
0262234
03/07/30 00:33ID:KKMTj9U0初めの一行に「フォームからの文字列(c:\windows\system32)、分解の基準の文字(\)の場合の例」
と、一言かいておければよかったです。
無駄なレスさしてほんとに申し訳ないです。。
0263nobodyさん
03/07/30 00:34ID:???その台詞で貴様の技能がどの程度かよくわかった。
標準入力からだろうがブラウザからだろうが入力は入力だろうが。応用の利かない阿呆が。
0265234
03/07/30 00:37ID:KKMTj9U0え?STDINって、DOS窓じゃなかったんですか?
フォームのデータは、ReadParse使って、変数に格納してる状態なんですけど・・・
0266234
03/07/30 00:37ID:KKMTj9U00267nobodyさん
03/07/30 00:38ID:???>>263
はぁ、アフォだ。STDINなんかcgiで使えるわけないだろ、氏ね
0268nobodyさん
03/07/30 00:40ID:???0269234
03/07/30 00:43ID:KKMTj9U0標準入力、GETの場合は?以降を、分割するってことを言っていたんですね。
そういうことではないんです。
フォームから、好きな文字列とキーの文字を送ってもらって、
そのキーで「文字列」を分解するってことです。
GETの場合でいうと、
?moji=c:\windows\system32&key=\
それで、この「\」で「c:\windows\system32」を分解したいんです。
?moji=aiueo,kakikukeko,sasisuseso&key=,
こんなことです。
0271nobodyさん
03/07/30 00:47ID:???> 初めの一行に「フォームからの文字列(c:\windows\system32)、分解の基準の文字(\)の場合の例」
要は、ある文字列を分解の基準の文字で分解してリストにしたいって事?
split でいいんじゃねーの?って思うが、肝心な「期待しているリストにはこう入って欲しい」
みたいなこと書いてねーからさっぱり解らん
0272nobodyさん
03/07/30 00:53ID:???0273234
03/07/30 00:53ID:0qjcwLeTそういうことです。
それで、「ある文字列」も、「基準の文字」も、「何分割される」かも、分からない、という状況で、
どういうスクリプトで処理したらいいかといろいろ試行錯誤して、上のスクリプトができました。
それで、このスクリプトは正しいのか?、もっと簡単にできるんではないか?と思いまして、聞いてみました。
0274nobodyさん
03/07/30 00:56ID:???君はその事について未だ何も記述してないね
0275234
03/07/30 01:00ID:0qjcwLeT@match = split(/$kijun/,"$data")って処理されるわけですから、
基準の文字の数+1が必要な値になりますよね?
たとえば、\で切る、データが「a\b」だったら、2個という具合で。
だから、
@match = ();
for($n=1; $n<=$i+1; $n++){
push(@match,"$n");
}
ここで、その数だけ、配列の値を・・・・・・・・・・
あら、もしやこれ不要なんでは・・・
まさか、いらない・・・
あぁ、いらないんだ。。。
そーだったのか、アフォなことをした・・・・
0276234
03/07/30 01:02ID:0qjcwLeT$name = 'c:\windows\system32';
@match = split(/\\/,$name);
foreach $col (@match){
print "$col<br>";
}
これでいけたわ
すまんな、
0278234
03/07/30 01:05ID:0qjcwLeTでも、良く考えると、
push(@match,"$n")って、値がはいってるのに、
なんでc:とか変わってるのかと思ったら
あっはっは
0280234
03/07/30 01:06ID:0qjcwLeT@aaa = split(/$aa/,$bb)
ってすりゃぁ、
勝手に@aaaの値の数が調節されるんだな
あっはっは
すごいな、パールって
あっはっは
0281234
03/07/30 01:08ID:0qjcwLeTあっはっは
えらい迷惑かけちまってあっはっは
パールってのはすごい言語だ
あっはっは
俺としたことが・・
みんなこれ知っててだまってたんだろ?
まったく、恥かくぜあっはっは
0282234
03/07/30 01:10ID:0qjcwLeTforeach (split(/\\/,$name)) {
だったんだな
なんかほかの物に見えたよ。
この時点で答えでてんじゃん
あっはっは
俺ってどんくさいな
0283nobodyさん
03/07/30 01:11ID:???↓
0284nobodyさん
03/07/30 01:11ID:???では次の質問どーぞ!
0286234
03/07/30 01:19ID:0qjcwLeT授業でCあるからな・・
0288nobodyさん
03/07/30 01:26ID:???0289nobodyさん
03/07/30 01:32ID:???0290nobodyさん
03/07/30 01:33ID:???0293nobodyさん
03/07/30 02:14ID:???@ARGVがあれば、@ARGVが行入力演算子に割り当てられ、
@ARGVが空ならSTDINが割り当られる。
代入先がないので、読み出して捨ててる。
STDINが割り当てられたのなら、STDINを一行読み飛ばしている。
STDINにターミナルデバイスが割り当てていれば、一行待って、中身を捨てるということに。
(単なる改行待ち)
>>292
キーボードに関してはperldoc -q keyで、faq5辺りに情報が載ってますよ。
http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlfaq5.html#How_can_I_read_a_single_characte
0295nobodyさん
03/07/30 03:25ID:JGELpVxkアクセスがあったらその間だけ
proxyサーバとして動作させ、目的のページを吐き出したら
proxyサーバを終了させる。といった感じですか?
それともproxyサーバとcgiproxyは別の原理ですか?
0296nobodyさん
03/07/30 03:31ID:chNZYbR6Perlのことで質問したいのですが。
変数名の一部に変数の中の数字を埋め込んで
その変数名を代入したいのですが
どのようにいくのでしょうか?
ちょっと、言葉では分かりにくいので例を挙げると
例えば、$a1 $a2 $a3という変数があって
$bの中に1〜3のいずれかの数字が含まれているとし
この$bの中の数字を変数名として使いたいのです。
これを
$c = '$a' . "$b";
といった感じでやれば$aの方はそのまま文字列として出て
$bの方は変数の中身が展開されて出ると思ってやってみたのですが
エラーが出てしまいます。
どなたかお助けください。
よろしくお願いいたします。
0297あぼーん
NGNG0298nobodyさん
03/07/30 03:57ID:???0300nobodyさん
03/07/30 10:34ID:???300 GET ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
0301nobodyさん
03/07/30 10:34ID:???なんでそういう発想になるんかね。
他の言語じゃそういう質問見かけないんだが(ないことはないと思う)。
やっぱソフトリファレンスのせいなんだろうか。
0302nobodyさん
03/07/30 11:00ID:???> すいません。
> Perlのことで質問したいのですが。
> どのようにいくのでしょうか?
> ちょっと、言葉では分かりにくいので例を挙げると
> どなたかお助けください。
> よろしくお願いいたします。
読みにくくなるだけだから無駄に6行も余計なことを書くな
0304nobodyさん
03/07/30 11:36ID:???まぁ、ちゃんと変数の整理が出来てないつーのと、変数のスコープを理解してないってことじゃないだろうか・・・
0305nobodyさん
03/07/30 11:53ID:???それはPerlの優秀な点である。
その分ユーザーのレベルが下がるのは仕方がない。
0306nobodyさん
03/07/30 12:32ID:???理解しないまま進んでしまうんじゃないかな。
0307296
03/07/30 13:22ID:VqnJP0e8print ${'a'.$b};
だとスカラ変数だとうまくいったのですが
配列の変数だとうまくいかないようです。
$sen1[] $sen2[] $sen3[]という変数があって
$randaに1〜3という値が入ていて
print("{${sen$randa}[$i]}");
のように書いたのですが、どうもうまくいかないみたいです。
0308nobodyさん
03/07/30 13:43ID:???ヽ(*`Д´)ノ むちゃくちゃやんけー!
0309nobodyさん
03/07/30 14:05ID:???モジュールまたがってソフトリファレンス使ってるソースを見たことがある。
最初どこから変数が湧いてくるのか理解できなくて気絶するかと思った。
……って、これはマ板ネタか。
>>307
勉強しなおした方が良いと思われる。
0310296
03/07/30 14:09ID:QHsgEgDpPerlは今回初めての仕様で、まだ慣れてないんで
お許しください。
外の括弧で囲めば、配列の[]が文字列として認識されずに済むと
聞いてやってみたのですが
もしかして、これはPHPの文法でしょうか?
0311296
03/07/30 14:10ID:QHsgEgDp0312あぼーん
NGNG0313nobodyさん
03/07/30 15:13ID:???print ${'sen'.$b}[$i];
あと >>299 >>304 >>306 >>309 を10回ずつ声を出して読んで!!
お帰りはこちら ↓
http://www.google.co.jp/
0314nobodyさん
03/07/30 15:17ID:???> $sen1[] $sen2[] $sen3[]という変数があって
ってのは@sen1, @sen2, @sen3ってことか?
perlの配列がわかってれば、こんな書き方にはならないと思うのだが。
${'a'.$b}という回答を貰っておいて${sen$randa}[$i]はないだろ……。
print ${'sen' . $randa}[$i];
0315nobodyさん
03/07/30 16:38ID:Nvxneeyiif(!open(FH, ">>file")){ print 'file open error'; }
else{
flock(FH, 2);
print FH 'abcde';
close(FH);
}
このように追記モードの場合、flockは必要になるの
でしょうか。
0316nobodyさん
03/07/30 16:50ID:???0317あぼーん
NGNG0320nobodyさん
03/07/31 05:53ID:INH5PtXx上(最初)から順ではなく、下(最後)から読ませることは出来ませんか?
0322nobodyさん
03/07/31 07:08ID:???有難うございました。
0323nobodyさん
03/07/31 10:39ID:???0325あぼーん
NGNG0326あぼーん
NGNG0327あぼーん
NGNG0328あぼーん
NGNG0329nobodyさん
03/07/31 12:08ID:???$t = time;
print "UTC =", timegm( gmtime( $t ) ), "\n";
print "UTC =", timelocal( localtime( $t ) ), "\n";
gmtime とか localtime で返してくる値を time で
返す値の形式に戻すコードってこんなんでいい?
テストしたら一応2つとも同じ値返す様になったけど…。
0330nobodyさん
03/07/31 12:56ID:???誰かのお墨付きが欲しいの?
0331nobodyさん
03/07/31 13:18ID:???UTC の解釈もチョット間違ってたし<自分
0332nobodyさん
03/07/31 13:32ID:???0333あぼーん
NGNG0334nobodyさん
03/07/31 13:55ID:???のような小数計算で$tに正しく答が代入されないのはなぜですか?
0335nobodyさん
03/07/31 14:11ID:???0337336
03/07/31 14:22ID:???0338334
03/07/31 14:29ID:???代入して、htmlに書き出すだけです。
>336
そうなのですか…
遠回りですが整数でやることにします。ありがとうございました。
0339nobodyさん
03/07/31 14:55ID:???HTMLだと、<img>タグを使ってたのですが、
<img src="./hoge.cgi">
CGIファイルだと、これがうまく起動されないわけです。
print "<img src=\"./hoge.cgi\">";
どうしたら良いでしょうか?ご教授お願いします。
0341nobodyさん
03/07/31 16:11ID:???当たり前ですがエラーはでません。
起動したいファイルから吐き出しファイルが更新ができないだけなので、
どう質問したらいいでしょうか?よろしくお願いします。
って340じゃ無理か。(w
0342nobodyさん
03/07/31 16:20ID:???CGIから別のCGIを呼び出して、その出力を利用したいという事か?
お前の質問からそれを読み取るのは著しく困難だし、態度悪いから教えない。
0344nobodyさん
03/07/31 17:07ID:???0346nobodyさん
03/07/31 20:52ID:???いやもう見てて哀れだよ。
自分がたたかれてる理由がわからない奴ってのは。
しかしここで教えるとためにならんしなあ。
辛いところだ。
0347nobodyさん
03/07/31 21:26ID:???んでエラー吐かんのは当たり前なんかい。
ちゃんと動かんかったらエラー吐くようにしとらんだけやんか。
それがあんたにとって当たり前なら、あんたの書いたコードは書いた通り
正常にうごいとるわけで、プログラムはなんも悪くないとオモーヨ。
はぁ
0348nobodyさん
03/07/31 21:31ID:???0349nobodyさん
03/07/31 21:44ID:???0350nobodyさん
03/07/31 22:18ID:???そういう態度を取る可能性があるからね。
思い通りに動作しなかったり、質疑応答が長引いて耐え切れなくなったときに。
お互いがイヤな気持ちにならないためにも、そしてスレのためにもそういうアフォな質問者は
さっくりと無視しましょう。
0351nobodyさん
03/07/31 22:31ID:???if ($a<10)
これを
if ($a>1 && $a<10)
と書くような技法を何ていうんでしたっけ?知ってる人教えてください。
0352あぼーん
NGNG0353あぼーん
NGNG0354nobodyさん
03/07/31 22:47ID:???いやなら無視すりゃいいのに。
0355nobodyさん
03/07/31 22:57ID:???0356nobodyさん
03/07/31 23:20ID:???0357nobodyさん
03/07/31 23:26ID:???■ このスレッドは過去ログ倉庫に格納されています