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

Perl コーディング初心者質問コーナー Part26

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

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

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
0352あぼーんNGNG
あぼーん
0353あぼーんNGNG
あぼーん
0354nobodyさん03/07/31 22:47ID:???
自演うぜー。まじで。
いやなら無視すりゃいいのに。
0355nobodyさん03/07/31 22:57ID:???
結合演算子を使う技法w
0356nobodyさん03/07/31 23:20ID:???
ていうか名前なんてあるのか
0357nobodyさん03/07/31 23:26ID:???
2行を1行にする技法
0358nobodyさん03/07/31 23:46ID:???
>>354
自演?
心配すな。
おまいも端役のひとりじゃ
0359nobodyさん03/08/01 00:33ID:???
>>354
>>339必死だな。
0360nobodyさん03/08/01 04:02ID:???
>>351
トリビア技法
0361nobodyさん03/08/01 04:05ID:???
いらっしゃーい、Perlのコーディングで困ってる人のスレです。

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

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

最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。
0362nobodyさん03/08/01 04:09ID:???
ここって初心者スレのワリにレベル高いんですけど。
0363nobodyさん03/08/01 04:55ID:???
本漁ったりググって分かる疑問は質問するまでもないからでしょ
0364nobodyさん03/08/01 05:59ID:???
人に聞いているうちは初心者。
たいていのことを自分で解決できるようになれば、まずは初心者脱出ってこと。
0365nobodyさん03/08/01 08:23ID:???
364に勝手に追加

自分で調べる前に聞いているうちは一生初心者にすらなれない。
0366nobodyさん03/08/01 10:15ID:???
馬鹿高い本を買って自己解決する
安めの本を買って、足りない部分は周りを利用する

どっちが初心者だろうね
0367nobodyさん03/08/01 10:24ID:???
付属ドキュメントで自己解決する
0368nobodyさん03/08/01 11:27ID:???
初心者は「初心者の質問板」or「PC初心者板」へGo!!
0369nobodyさん03/08/01 12:33ID:???
安い本で慣れて高い本で補う。
0370nobodyさん03/08/01 14:09ID:???
先人たちの築いた知識を上手に利用して上達への近道を選ぶのは初心者でつか?
0371 ◆hMJAPH9PWA 03/08/01 14:27ID:???
> 安めの本を買って、足りない部分は周りを利用する

「周り」が正規のマニュアルを指しているなら賛成だけど、
そうじゃないなら、たとえ馬鹿高くてもちゃんとした本を買うべきだと思う。
0372nobodyさん03/08/01 14:36ID:???
こんなところで質問するようなやつは上達しないってことだ
0373nobodyさん03/08/01 16:33ID:???
このスレ腐ったな
0374nobodyさん03/08/01 16:47ID:???
夏は腐りやすいのでご用心
0375nobodyさん03/08/01 16:48ID:???
>>364
>>365
だったら初心者は自分で調べるのにわからない香具師ですね
0376nobodyさん03/08/01 17:30ID:???
>先人たちの築いた知識を上手に利用して上達への近道を選ぶのは初心者でつか?
ヒントを乞う位なら構わんけどさ、自助努力の前にしつこく説明してクレクレ言う椰子は嫌だな。
一々誰かの時間を奪ってまで問答を求めるのは「上手な利用」とは言わない。
先人の知識ってのは先に書籍とかを当たった方がはやい。
それでも詰まったときに質問するのはアリ。
試行錯誤をめんどくさがり過ぎてるのがミエミエな奴はムカツク。
0377nobodyさん03/08/01 17:55ID:???
>>370
>上手に利用
もちろんまず初めにGoogleだよな???
0378nobodyさん03/08/01 18:06ID:???
もちろんはじめに燃料投下
0379nobodyさん03/08/01 18:46ID:???
テンプレに(・∀・)イイ!!質問者の例とイク(・A・)ナイ質問者の例を載せれよ
0380nobodyさん03/08/01 19:50ID:???
>>379

>>1 に書いてあるじゃん

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

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

最低でも1と3が無いと誰も答えられないよ。

これに反するような質問が悪い例
0381nobodyさん03/08/01 20:31ID:???
「例」という日本語が理解できてない香具師はけん
0382nobodyさん03/08/01 20:36ID:???
1. >>1嫁。
2. 過去ログ嫁。
3. ググるれ。
0383nobodyさん03/08/01 21:25ID:???
>>379
そんな事言う様なら質問以前の問題だと思う
0384nobodyさん03/08/01 21:44ID:???
このスレ、ちょっとPerl覚えた厨に汚染されて臭いね。
質問を乞うぐらいにならんと上達せんよ。
まあ、中途半端な奴に言ってもわからかな。はは。
0385nobodyさん03/08/01 21:47ID:???
Perl覚えたばかりでもいいからさ。
常識や礼儀を覚えてない奴は勘弁してくれ。
0386nobodyさん03/08/01 22:18ID:???
( ´∀`)ここ2ちゃん
0387nobodyさん03/08/01 22:21ID:???
>質問を乞うぐらいにならんと上達せんよ。
マトモな質問者なら大歓迎なのれす。
0388nobodyさん03/08/01 22:50ID:???
>386みたいに思ってる奴は当然、2ちゃんだから嘘を教えられても文句言わないよな?
0389nobodyさん03/08/01 22:58ID:???
そんなアフォはほっとけや。イチイチ相手にしてるだけ無駄
0390nobodyさん03/08/01 22:58ID:???
正直、昔のほうが質問者叩きはひどかったわけだが。
普通に質問しても「氏ね」とか言われたもんだ。
ここまで丸くなった2ちゃんでまだ叩かれてるような奴って……
0391nobodyさん03/08/01 23:12ID:???
>>390
うれしげに・・・とかするなドアフォ
言いたいことあるなら最後まで言ってくれ
0392nobodyさん03/08/01 23:17ID:???
アフォだらけ
0393nobodyさん03/08/01 23:28ID:???
>良い回答は良い質問から。
これが見事に実践されてるわけだな。
アフォな質問にはアフォな回答が。
0394nobodyさん03/08/01 23:48ID:???
初心者だらけだから仕方ないよ
質問するときは内容をよく吟味してから投稿してください。
0395nobodyさん03/08/02 00:46ID:???
以上、>>339=341の自作自演でした。
0396nobodyさん03/08/02 01:55ID:O5cg5dSH
perl5ですけど
srand(time|$$);
を付けないと、rand が時間で決まってしまいます。
そんなもんなんですか?
0397山崎 渉03/08/02 02:20ID:???
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
0398nobodyさん03/08/02 03:19ID:???
>>396
>>1
0399nobodyさん03/08/02 04:25ID:???
>>396
試してないけど

srand($$|time);

これじゃ、駄目か?w
0400ぼるじょあ ◆ySd1dMH5Gk 03/08/02 04:48ID:???
     ∧_∧  ∧_∧
ピュ.ー (  ・3・) (  ^^ ) <これからも僕たちを応援して下さいね(^^)。
  =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
  = ◎――――――◎                      山崎渉&ぼるじょあ
040139803/08/02 04:51ID:???
(´・ω・`)<俺、日本語が不自由なんだよ。
0402nobodyさん03/08/02 08:53ID:???
あげ
0403nobodyさん03/08/02 10:06ID:???
>>401
ならば、お前が得意な言語でもいいぞ。
0404nobodyさん03/08/02 10:25ID:???
トッカロピ
0405nobodyさん03/08/02 11:24ID:???
>>396
while(time%60){
# wait..
}

print rand(), "\n";

をf複数のプロセスで動かしてみたけど、全部違う値になったよ。
WindowsXpHome ActivePerl 5.6.1/FreeBSD Perl 5.8.0/Linux Perl 5.6.1
実行環境と同じ値になる根拠をしめしてください。
0406nobodyさん03/08/02 12:52ID:???
>>396 の PC は時計が動いていないという罠
0407nobodyさん03/08/02 14:08ID:???
$tmp = $log[$i];
@dat = split(/<>/, chomp $tmp);

$log[$i] の改行コードを省いたものをカットして @dat に格納して処理したいんですが、
$log[$i] そのものの改行コードは残しておきたく、$tmp を使っています。
これを一発で表現する方法を教えてもらえませんか?
0408nobodyさん03/08/02 14:26ID:???
一発じゃないが
@dat = split(/<>/, $log[$i]);
chomp $dat[-1];
0409nobodyさん03/08/02 14:28ID:???
>>408
thx
そちらの方がスマートですね。参考になりました
0410nobodyさん03/08/02 20:02ID:???
**************************************************
***   Hello! Welcome to the 2ch World!   ***
**************************************************

と表示しようとして、

#!/usr/bin/perl

print "content-type: text/html\n\n";

print "**************************************************\n";
print "***   Hello! Welcome to the 2ch World!   ***\n";
print "**************************************************\n";

とメモ帳に入力してmona.cgiという名前で保存し、tok2.comにffftpを使ってうpしたのですが、
いざ結果を見てみると、

************************************************* *** Hello! Welcome to the 2ch World! ***
*************************************************

と言う風に表示されてしまいます。
どうしたら一番上のような結果にすることができるのでしょうか?
OSはWindowsです。どうかよろしくお願いします<(_ _)>
0411nobodyさん03/08/02 20:41ID:???
>>410
print "content-type: text/plain\n\n";
041241003/08/02 20:53ID:lcThEZov
>>411
レスありがとうございます。
早速、 print "content-type: text/html\n\n";を print "content-type: text/plain\n\n";
に直して再度うpしてみたのですが、結果は同じでした(´・ω・`)ショボーン

誠にあつかましいのですが、他に良い方法は無いでしょうか?
どうかよろしくお願いします。
0413nobodyさん03/08/02 20:55ID:???
トクトクは勝手にヘッダ情報変えなかったっけ?
0414nobodyさん03/08/02 21:03ID:???
>>410
HTMLで出力。
0415nobodyさん03/08/02 21:04ID:84QkeiYe
<a href="http://i.2ch.net/">2ちゃんねる(巨大掲示板)</a>の<a href="http://book.2ch.net/poem/i/">詩・ポエム板</a>
を、
2ちゃんねる(巨大掲示板)の詩・ポエム板
としたい(ようは、リンクを取り除きたい)のですが、
どうすればいいのでしょうか・・・?

わからないながらに、やってみましたが、
$HTMLContents =~ s/<a href="http:\/\/(.*)">(.*)<\/a>/$2/g;
とすると、「詩・ポエム板」しか$2に入りません。。。
0416nobodyさん03/08/02 21:06ID:???
>415
最小マッチングでぐぐれ。
041741503/08/02 21:21ID:84QkeiYe
>>416
さんくすです。
ぐぐりました。

$HTMLContents =~ s/<a href="http:\/\/(.*?)">(.*?)<\/a>/$2/g;

で解決しますた。
0418nobodyさん03/08/02 21:40ID:lx3eHYOp
CGIとは関係ないんだけど
@INCをコマンドラインで指定して実行する方法ってありましたっけ?
0419nobodyさん03/08/02 21:42ID:???
すみません。
-Iオプションですね。。。
0420nobodyさん03/08/02 21:43ID:???
>>418
何故ヘルプを見ない?
-Idirectory specify @INC/#include directory (several -I's allowed)
0421nobodyさん03/08/02 21:43ID:???
>>418=>>419
おっと失礼。>>420は無視しといて。
0422nobodyさん03/08/02 21:45ID:???
>>418
どうでもいいが、ここはCGIスレじゃないので一行目は余計。
0423nobodyさん03/08/02 23:01ID:???
>>412
print "**************************************************<BR>\n";
print "***   Hello! Welcome to the 2ch World!   ***<BR>\n";
print "**************************************************<BR>\n";
0424nobodyさん03/08/03 01:14ID:???
\nはプロンプトでの改行
htmlの場合はソース内の改行
当然見た目を改行させるには<br>がいる
042541203/08/03 09:51ID:???
>>411
>>413
>>414
>>423
>>424
できました! こんなくだらない質問に答えてくれて皆さんどうもありがとう
ございました<(_ _)>
0426nobodyさん03/08/03 12:05ID:???
>>425
くだらないつーか。text/plainを勝手にtext/htmlと解釈することがあるという
IEの仕様にからむ、とても難儀な問題なのだよ。
0427nobodyさん03/08/03 12:21ID:???
text/plainにかぎらず、例えばimage/jpegでも中身がHTMLらしければ。
0428nobodyさん03/08/03 13:14ID:???
あるブラウザは Content-Type: を無視して送られてきたコンテントの
内容を走査して、勝手に振る舞ってるってことかな
0429nobodyさん03/08/03 13:26ID:???
>>428
そういう糞ブラウザは、image/png でハードディスクの内容を消去するバイナリが埋め込まれていると、
実行しちゃうんだろうなぁ。。。
0430nobodyさん03/08/03 15:35ID:???

&foo( %ENV, "sample", 123456 );

sub foo
{
my (%a, $b, $c ) = @_;
}

こうやっても、%a $b $c に何も入ってこないよ〜
解らないよ〜ヽ(´Д`;)ノ
0431nobodyさん03/08/03 15:49ID:???
return
0432nobodyさん03/08/03 15:59ID:???
リファレンス
0433nobodyさん03/08/03 17:33ID:???
初心者スレなんだからそんな答え方じゃ解らんだろう

&foo( \%ENV, "sample", 123456 );

sub foo
{
my ($a, $b, $c ) = @_;
my %a = %$a;
}

リファレンスについては http://www.kt.rim.or.jp/~kbk/perl5.005/perlref.html
0434nobodyさん03/08/03 17:42ID:???
>>433
先越された(´・ω・`)

んじゃ一応補足……$a->{HOGE} とやればハッシュをコピーしなくてもそのまま参照可能。
配列の場合も同じように。
0435nobodyさん03/08/03 17:47ID:???
>>430
ハッシュは(key1,value1,key2,value2・・・)となってるただの配列。
で、配列は展開されちゃうから、
my %hoge = (1=>'a', 2=>'b');
&foo(%hoge, "sample", 123456);

sub foo {
my (%a, $b, $c ) = @_;
}
と書くと、%aには(1,'a',2,'b',"sample",123456)が入り、$b,$cはからになる。
ちなみにリファレンスを使うのが普通だが、使わないでやりたいなら

my %hoge = (1=>'a', 2=>'b');
&foo("sample", 123456, %hoge);

sub foo {
my ($b, $c,%a) = @_;
}

とすることもできる。
0436nobodyさん03/08/03 17:50ID:???
>434に補足してみる。
$a->{HOGE}とやると参照渡しになるので、その中身を変更しようとすると実引数の中身も書き変わる。


$ENV{HOGE} = 'hage';
&foo( \%ENV, "sample", 123456 );
print $ENV{HOGE};  # higeが表示される

sub foo
{
my ($a, $b, $c ) = @_;
$a->{HOGE} = 'hige'
}
0437nobodyさん03/08/03 18:23ID:???
大きいハッシュや配列にリファレンスを使わないと
値を@_へコピーするのに時間がかかる(メモリも喰う)から、
なるべくリファレンスを使うのをお勧めします。
0438nobodyさん03/08/03 18:27ID:???
>>435
> ハッシュは(key1,value1,key2,value2・・・)となってるただの配列
ソースキボンヌ
つーか、ただの配列だったらでかいハッシュに対して$foo{bar}なんてことは気軽に出来ないから、間違いじゃねーの。
0439nobodyさん03/08/03 19:13ID:???
配列型(AV)とハッシュ型(HV)は別物。ただし代入はできます。
044043003/08/03 19:27ID:???
レスどうもです。リファレンス…奥が深そうですね。

Cで言うと、アドレス(orポインター)渡しみたいなもんですか?
なんか、少し混乱気味ヽ(´Д`;)ノ

>>433-435 さんのレスを参考にコーディングしてみます。
0441nobodyさん03/08/03 19:34ID:???
>>440
ポインタを理解してるんなら、覚えるのは早いと思うよ。
0442nobodyさん03/08/03 19:45ID:???
リファレンスを使えるようになったら脱初心者といえますか?
0443nobodyさん03/08/03 20:01ID:???
>>438
ハァ?
>ただの配列だったらでかいハッシュに対して$foo{bar}なんてことは気軽に出来ないから
何をおっしゃってますか?
内部でハッシュ関数を呼び出して、得られた値をインデックスとして使っているのですよ。
配列はランダムアクセスできるからO(1)じゃん。
0444nobodyさん03/08/03 20:04ID:???
>>438
ああ、もしかしてC++で言うこところのlist<string>だと思ってるわけ?間違いじゃねーの。
0445nobodyさん03/08/03 20:46ID:???
>>438
%hogeは配列に見えるし、配列で代入できる。
けれど内部的にはハッシュ。何も問題なし。
0446nobodyさん03/08/03 20:50ID:???
>>443
「ハッシュは...となってるただの配列」は>>435の発言なのでお間違いなきよう。
0447nobodyさん03/08/03 21:55ID:HoJp4WnK
html.gzファイルをopenして書き出してもブラウザにうまく表示されません。
Content-typeの表示が問題と思い、
なんとかEncoding:gzipかなんか書いたんですがだめでした。
何が問題と考えられるでしょう。
0448nobodyさん03/08/03 22:08ID:???
Content-Encoding
0449nobodyさん03/08/03 22:10ID:???
>>447
>>1を読まないのが問題。
2度と来るなとは言わんが、>>1を1日10回読んで1週間後にまた質問しに来い。
今日はもう書き込むな。
0450nobodyさん03/08/04 12:13ID:???
>>449
そういうの辞めて無視し。いい加減バカかと。
0451nobodyさん03/08/04 12:20ID:???
>>450
なら、文句をいわずに、お前が回答しろ。
■ このスレッドは過去ログ倉庫に格納されています