Perlコーディング初心 ..
347:nobodyさん
08/04/17 09:58:36
>>345,>>346
> # ↓UTF8でPOSTされた情報を想定(内部ではワイドキャラクタとして格納されてます)
> my $str = '%E8%8C%B6%E6%B1%B2%E5%85%BC%E9%9B%91%E7%94%A8%E4%BF%82';
それデコードしたら、バイナリ(utf8フラグoff)のUTF-8文字列。
とりあえず、use utf8;とuse encoding "utf8"を外して、そのままprintしてみ。
ちゅうか、use utf8 とuse encoding "utf8"両方してる意味がわからん。
348:nobodyさん
08/04/17 14:34:42 FD3bsXbG
>>345です
解決しました。情報に感謝します。
>>346の内容を、Encode::〜でやりました。
こういうのって結構な落とし穴ですね。フラグのことはわかっているつもりでしたが……
349:nobodyさん
08/04/17 20:17:29 2zzFnXWL
教えて君でスマンが、分かる人がいたら助けて。
CGI::Applicationパッケージを使っているんだけど、
param() 関数で、数字だけの長い「文字列」を受け取ると
数値リテラルとして、しかも丸められた値が返されちゃうんだけど、
文字リテラルとしてそのまま受け取れるよい方法ないかな?
350:349
08/04/17 22:21:21
自己レスです。
CGI.pmにまでさかのぼって調べた結果、
query()->param()は文字リテラルで返してました。
自分が書いた、表示する際の処理のバグでした。orz
351:nobodyさん
08/04/18 00:03:02 qXgVgrBZ
いつもすみません。
自分で作ったhash refの配列がデリファレンスできません。
$array[0]->{key}
$array[0]{key}
${$array[0]}->{key}
とか書いてみましたが様々なエラーが出ました。どう書いたらいいですか?
352:nobodyさん
08/04/18 00:07:12
すみません。問題を取り違えていました。デリファレンスはできてました。
ソートをしようと思い、下記のように書いたらhash refを配列扱いするなと言われます。
my @sorted = sort {$array[$b]->{score} <=> $array[$a]->{score}} @array;
よろしくお願いします。
353:nobodyさん
08/04/18 00:20:08
ものすごく勘違いしてました。こういうことでした。
my @sorted = sort {$b->{score} <=> $a->{score}} @array;
354:nobodyさん
08/04/18 10:01:49
そういうときもあるよ
355:nobodyさん
08/04/18 18:42:42 J/rLxrZJ
前に2項分布について質問した者ですが、
これだけでも教えてくれると助かります…。
1.#INF の意味はなんですか?インフィニティ?
検索しても#は検索対象にならないらしく、
*.INFの設定ファイルや関係無いものが出て来るばかりで…。
356:nobodyさん
08/04/18 19:06:45
知らんがな
357:nobodyさん
08/04/19 09:40:11
インフォメーションじゃね?
それかインフォーラム
もしくはインフェルノ
358:nobodyさん
08/04/19 12:48:02 n4AN2xdT
URLリンク(www.semblog.org) で配布されている、
RNAというアンテナソフトを使っています。
すでに動作してるのですが、summary部分のhtmlタグを除去したいと思います。
URLリンク(www-kasm.nii.ac.jp)
のようにRSSを取得してくるCGIなのですが、
summary部分にhtmlタグが残ってしまいます。
ATOMやRSS2.0などでしょうか、
Yahoo!やexcite等RSSにhtmlタグが入ってるサイトを巡回すると
htmlタグが入ってしまいます。
template/recent_template には
<div class="summary">
<$RNAItemDescription$>
</div>
となっており、そのあたりを作ってると思われる
lib/RNA/AntennaTree.pmの1029行目、
my $encoded_descript = encode($item->{channel}->{description});
の後に
my $encoded_descript =~ s/<.*?>//g;
を追加してみたところ、サマリー部分がなくなってしまいました。
開発がストップしてるCGIなので、なんとか改造して使い続けたいと思っています。
どうかご教示願います。
359:nobodyさん
08/04/20 00:00:52
いくら何でも冷たすぎじゃないかお前ら。
>>355
備長炭 自殺方法 でぐぐれ。それでダメなら二項分布 オーバーフローとか。
360:nobodyさん
08/04/20 01:46:25
>>358
現物ソース確認したわけじゃないけど
URLリンク(naoya.dyndns.org)
の下の方にある remove_html を試してみたらどうかな。
361:nobodyさん
08/04/20 02:10:18
>>358
そのモジュールについては詳しくはわからないけど、もともとのソースをいぢるんじゃなくて、
それが吐き出したものを、自前で書き換えればいいんじゃね?
362:nobodyさん
08/04/20 02:30:50
元のコード見なくても
> my $encoded_descript = encode($item->{channel}->{description});
> の後に
> my $encoded_descript =~ s/<.*?>//g;
> を追加
って書いてるんだから
my $str = "<strong>大切な</strong>文書";
my $str =~ s/(.)/$1/g; # 行頭の何かが余計
print length($str);
こういうことじゃないの。
363:nobodyさん
08/04/20 16:44:58
ヒアドキュメント内でハッシュリファレンスを使う場合はどのようにすればよいのでしょうか?
$text =<<EOL;
name = $h->{'name'}
mail = $h->{'mail'}
EOL
とやっても変数が展開されません。
仕方ないのでハッシュにデリファンスしてますが、
方法があったら教えてください。
364:nobodyさん
08/04/20 17:36:03
本当はシングルクォートで括ってね?
365:nobodyさん
08/04/20 20:52:48 tHisgd6U
オリジナルの携帯サイトアクセスランキングを作っています。
OUTをカウントするためなんすけど、アンカーから自前のCGIページを通過させてリンク先を表示させるにはどうすればいいですか?
366:nobodyさん
08/04/21 00:00:18
自前のCGIページを通過させるアンカーを出力すればよいと思います。
367:nobodyさん
08/04/21 18:56:21
>>363
my $h = {name=>'john', mail=>'john@example.net'};
my $text =<<EOL;
name = $h->{'name'}
mail = $h->{'mail'}
EOL
print $text;
こんな感じ。
368:358
08/04/23 09:11:49
>>360, >>361, >>362
ありがとうございます。
remove_html、使いたいのですが使い方がわかりません...
# URLリンク(naoya.dyndns.org)
sub remove_html {
my ($str) = @_;
my $ret;
if (defined $str) {
my $p = HTML::TokeParser->new( \$str ) or die "$!";
do {
my $plain = $p->get_text;
$ret .= $plain;
} while (my $token = $p->get_tag);
}
$ret;
}
を lib/RNA/AntennaTree.pm の最下部に追記して、
my $encoded_descript = encode($item->{channel}->{description});
の後に見よう見まねで
my $encodec_descript = &remove_html();
としてみましたが変わらずでした。
369:nobodyさん
08/04/23 12:47:07
m_unit.plというライブラリがほしいんですがググっても出てきません
どこで手に入れる事ができるでしょうか?
370:nobodyさん
08/04/23 13:05:00
>>369
ググっって出てくる奴とは違う物?
371:↑
08/04/23 13:08:34
ごめんなさい間違えました(><)
372:nobodyさん
08/04/24 18:43:40
ABCXXXDEF
という文字列から
ABCとDEFを削除してXXXのみを表示させたい場合はどうすればよいのでしょうか?
$moji = ABCXXXDEF;
$ans = $moji からABCとDEFを削除;
print "$ansです\n"
という具合でいいんでしょうか?
このABCとDEFを消す処理の部分がわかりません。
373:nobodyさん
08/04/24 18:47:46
$moji =~ tr/ABCDEF//d;
print $moji;
374:nobodyさん
08/04/24 18:48:17
>>372
$moji =~ s/ABC|DEF//g;
$ans = $moji
375:nobodyさん
08/04/24 18:50:21
>>373>>374
ありがとうございました。
助かります。
376:nobodyさん
08/04/26 13:15:07 flUVuiqJ
basenameでファイル名を取り出したいのですが、ブラウザが動いているOSの種類によって、
区切りが/であったり\であったりとまちまちです。
perlはLinux上で動いているので、デフォルトでは、/で区切られている場合しか、ファイル名を取り出せません。
\で区切られている場合でも、取り出せるようにするにはどのようにしたらよいのでしょうか?
fileparse_set_fstypeでMSWin32を指定してしまうと今度は、Unixからアクセスしてきた場合にうまくいきません。
377:nobodyさん
08/04/26 13:19:19
んなもんアクセスしてきたOSの種類で使いわけりゃいい話だろボケ
こんなもん中学生でも分かるぞカス死ね
378:nobodyさん
08/04/26 16:13:45 flUVuiqJ
もしブラウザがOSに関する情報を送ってこなかったらどうすればよいのでしょうか?
379:nobodyさん
08/04/26 16:23:13
>>378
ファイルの有無を判断して、
どっちのデリミタで切るか、
判断したら?
380:nobodyさん
08/04/26 17:01:10
アクセスしてきたOSは関係ない。
Perlが動いているサーバーのOSが関係する。
そして、basenameは動いているOSによって区切りを/か\か自動的に
判断してくれるので便利に使える。
サーバーがWindowsでもLinuxでもbasenameは正しく動いてファイル名を取り出せる。
取り出せない場合は、何か別の原因。
381:nobodyさん
08/04/26 19:45:43
type=fileで送られてくるファイル名の話じゃないのか?
382:nobodyさん
08/04/26 21:48:20 vQRq4Omz
だいたいみなさんの、perl普通にコード書き込みできるまでに要した
時間と日数おしえてもらえませんか?時間とか1日何時間くらいしてます?
383:nobodyさん
08/04/26 22:09:54
意味が。
384:nobodyさん
08/04/26 22:14:17
>>382
もっと、日本語を勉強した方がいいよ
385:nobodyさん
08/04/26 22:49:57
>>382
皆さんは「週何日、1日当たり何時間」なんていう時間割みたいな方式で
取り組んできたわけじゃないので、そういうのはよくわかんないのです。
そりゃ、そんな方式で堅苦しく取り組んできた人もいるかもしれないけど。
あなたが今までにちんちんを何ストロークしてきたかが不明なのと似てます。
386:nobodyさん
08/04/27 00:52:54 G3KB/HmG
mod_rewriteでURLを書き換えた時に%2Fがあると404エラーになってしまうので
スラッシュをURLエンコードさせたくないのですが、可能でしょうか?どなたか助けてください・・
p://example.net/dir/index.cgi?name=<em>hoge</em>
このように、どうしてもタグが含まれてしまうURLなので困ってます。
見るからに初心者ですが、どうかよろしくお願いします。
387:nobodyさん
08/04/27 01:20:29
>>386
不可能。
388:386
08/04/27 02:55:07 G3KB/HmG
>>387
そうですか・・
諦めて他に方法がないか試行錯誤してみます
ありがとうございました。
389:nobodyさん
08/04/27 23:26:09
>>382
10時間ぐらいかな。
もっとも、Perl以前にawk, sed, C
などの下地があったわけだが。
390:nobodyさん
08/04/27 23:35:33
普通がどの程度か全く分からないけど、とりあえず動く掲示板を作るのに1日1〜2時間ほど
コード書いて1週間かかった気がする
そんな自分は C (すっかり書けないけど、ポインタで躓くまでは書いてた)、VB (アプリをいくつか作ってた) の経験ありです。
391:nobodyさん
08/04/27 23:39:03
Perlでバッチ処理を書くのはすぐ出来るけど、
Webアプリ(cgi)は時間がかかると思う。
392:nobodyさん
08/04/27 23:44:48
そんな貴方にCGI.pmですよ
393:nobodyさん
08/04/30 17:01:56 9OxUbc+M
あの、乱数についてなのですが、100~150までの間でランダムな数をスカラー変数に格納するにはどうすればいいでしょうか?
394:nobodyさん
08/04/30 17:13:24
my $rndnum = rand(51) + 100
rand(51)
0 〜 51 未満を生成 (未満は 51 を含まないので 50 以下の数字が現れる)
+100
下限値である 100 を加えてやる
以上
395:nobodyさん
08/04/30 17:14:49
int
396:nobodyさん
08/04/30 17:19:40
my $rndnum = int(rand(51)) + 100;
397:nobodyさん
08/04/30 17:19:49
忘れてたw
>>395
thx
my $rndnum = int(rand(51) + 100);
398:nobodyさん
08/04/30 18:11:00
>>393の質問ではintなしの>>394が正解とすべきなんじゃないか?
質問者の質問が悪いところまでフォローして手取り足取りするのが役目?
399:>>393
08/04/30 18:26:54 9OxUbc+M
皆さんどうもありがとうございます。
確かに>>398さんの言うとおりです。わざわざフォローして下さった親切なお二方に感謝します。
400:nobodyさん
08/04/30 18:38:47
すいません。
どうも下記例のforeachのループの中で、さらにwhileのループを
回せないのですが、たぶん簡単な理由だとは思うのですが、
お助け下さい。
他にもこのようなforeachのループの中で、foreachのループも回せないと
思います。
foreach $number(@number){
while (<F2>) {
print "$number\n";
if (/$number/)
{
print "マッチしました\n";
print F3;
}
}
}
401:nobodyさん
08/04/30 19:09:01
>>400
<F2>で同じ行数を複数回とりだしたい感じ?
だとしたらヒント:seek
402:nobodyさん
08/04/30 19:10:23
>>400
1回目のforeachが終わったときに<F2>が空になる
403:nobodyさん
08/04/30 19:48:00
whileに入る前に開きなおすのも手だな
404:nobodyさん
08/04/30 20:17:59 GavbPT5W
一回目のループで開いてるファイルのファイル位置が終端にあるため
2周目はファイルを読み込むループが発生しません
解決法は2つ
・While の直前でファイルを開くようにする
・While の直前で seek を使ってファイル位置を先頭に戻す
です。
負荷は後者の方が幾分か軽いです
405:nobodyさん
08/04/30 20:28:06
my @lines = <F2>;
場合によってはこれもありかなと思った。無駄にメモリ食うけど。
406:nobodyさん
08/04/30 20:47:41
whileの中でforeachじゃ駄目なん?
407:400
08/04/30 23:43:57
すいません。seekというのは初めて知りました。
1回目のforeachが終わったときに<F2>が空になる ってマジですか。
例のループにseekを追加して、動くようにしていただけませんか?
お願いします。
408:nobodyさん
08/05/01 01:39:53
>>400
初めてのPerlと続・初めてのPerl買えばいいよ。
409:nobodyさん
08/05/01 12:48:54
コストの高い I/O をメインにループさせたほうがいいっすね
open(F2, "hoge.txt");
while (<F2>) {
foreach $number(@number){
〜
}
}
close(F2);
410:nobodyさん
08/05/01 13:18:21
>>407
自分でやれ。
できないなら金払って業者つかえ。
代行するところじゃなく、自分で作るためのヒントを与えるところだ。
ここまでヒントがそろったらあとは調べながらできる。
411:nobodyさん
08/05/01 13:51:56
あとね、初心者なんだから記述を略すな
ちゃんと意味がわかってから略すように汁
412:400
08/05/01 23:38:01
>409 Thx 明日試してみます。seek(F2, 0, 0)では動かなかった。
>410 GW中くらい、自宅警備を止めてみたら?
>411 省略ハァ? 汁?
413:409,411
08/05/01 23:46:36
そういう口調ならてめぇで解決しろよ能無しチンカス糞野郎
414:nobodyさん
08/05/02 00:07:00
> 省略ハァ? 汁?
ワロタ
415:nobodyさん
08/05/02 05:46:04
まあ、なんだ
「ものを学ぶ姿勢」ってやつを身に着けないと成長できないよね
416:nobodyさん
08/05/02 08:12:32
きっとこの人はこれからさきの人生も困ったら自分の力で解決しようとせず人を頼りにして生きていくんだろうな。
これ10代だったら笑って流せるけど、20代以上で本気で言ってたら深刻ww
417:nobodyさん
08/05/02 10:22:44
定期的に沸くから慣れろwww
418:nobodyさん
08/05/02 10:32:20
自分の書いてるのが略記だって事すらも気がついてないんだろうな
あと、これはおそらくは宿題だなw
419:nobodyさん
08/05/02 11:18:57
延々と質問者を叩く・・・キモッ
とっくに質問者は消えてることに気づけよ禿げ
420:nobodyさん
08/05/02 12:28:02
>>419
僕の予想が確かなら、質問者なら君のパソコンのモニタの前に居るよ。
421:nobodyさん
08/05/02 12:37:17
>>420
はぁ?俺か?
ちゃうっちゅーねん
あほか
422:nobodyさん
08/05/02 13:12:28
ノリが一緒でわろたwww
423:nobodyさん
08/05/02 13:34:20
お前の粘着っぷりのほうがおもろい
医者いったほうがええんちゃうかw
リアルでアレかw
424:nobodyさん
08/05/02 13:43:58
日本語が変でござるよ
425:nobodyさん
08/05/02 14:15:25
ネット上での似非関西弁って餓鬼が凄む時に巻き舌になるのに似てる
426:nobodyさん
08/05/02 14:47:41
それは言わないのが優しさだったのに・・・
427:nobodyさん
08/05/02 15:08:52
質問者以外が必死になる理由が見つからない
428:nobodyさん
08/05/02 18:44:35
ぼくが一番、perlをうまく操れるんだ!
429:nobodyさん
08/05/02 23:07:56
>>427
思い込み激しいとか言われへん?
回りに迷惑かけても気づかないタイプだな
回答もしないのに罵倒するのはお前だけやろ
頭変すぎてわからんかw
430:nobodyさん
08/05/02 23:28:43
>>429
そんならお前が回答してやれよ。 出来るもんなら。www
431:nobodyさん
08/05/02 23:45:27
>>429
なんでそんなに必死なん?
432:nobodyさん
08/05/02 23:59:11
GWで暇なんだろ
433:nobodyさん
08/05/03 02:50:47
GW、通勤とか会社の中とか人が少なくていいよね。
434:nobodyさん
08/05/03 03:07:39
いいですよね。客からの電話も鳴りませんし。
435:nobodyさん
08/05/03 10:04:09
泣いてませんか?
436:nobodyさん
08/05/03 18:44:15
内線もならないよね。
437:nobodyさん
08/05/03 19:02:10
でもトイレに花子さん居るよね。
438:フー子
08/05/04 19:36:48 798fbSDd
Perl の CGI::Base とか CGI::Request モジュールって、
何のためにあるの?どうやって使うの?
439:nobodyさん
08/05/04 19:50:31
>>398
初心者質問スレで何言ってるんだ。
440: ◆TWARamEjuA
08/05/04 20:01:51 BE:3267465-2BP(7082)
>>438
君かわいいね。
・・・ぶつ森のスレかとオモタorz...
URLリンク(search.cpan.org)
URLリンク(search.cpan.org)
を眺めてみればよろしいかと。
例文を眺めればだいたい何がしたいのかが見えてくるかと。
英文は無理に読まなくてもよろしいかと。
441:nobodyさん
08/05/04 20:22:15
pmという拡張子、ガクブル
442:nobodyさん
08/05/05 14:08:42 GD7pTJpy
CGI掲示板を自作していますが、書き込み送信メールのSendmailによる送信処理でつまづきました。
以下のように記述すると、管理人である自分には登録メールが送られますが、
管理人以外に、書き込みした人にも登録確認メールが送られるようにしたいんです。
#Sendmailによる送信処理
if (open(MAIL,"| $sendmail -t")){
print MAIL "X-Mailer:legend2\n";
print MAIL "To: $administrator\n";
print MAIL "Errors-To: $administrator\n";
print MAIL "From: $administrator\n";
print MAIL "Subject: $subject\n";
print MAIL "MIME-Version: 1.0\n";
print MAIL "Content-type: text/plain; charset=ISO-2022-JP\n";
print MAIL "Content-Transfer-Encoding: 7bit\n";
print MAIL "$mail_comment\n";
print MAIL "\n";
close(MAIL);
}
}
以下のどれかを使うのでしょうか?
print SENDMAIL "From: $sender <$from>\n";
print SENDMAIL "To: $to\n";
print SENDMAIL "Cc: $cc\n";
print SENDMAIL "Bcc: $bcc\n";
どうすれば良いか御教授下さい。宜しくお願いします。
443:nobodyさん
08/05/05 14:20:17
>>442
# CGIは板違いだが、この処理自体はCGIと関係がないので。
if文のブロックを、Toヘッダだけ「書き込みした人」のアドレスにしてもう一度処理するか、
Toを「書き込みした人」のアドレス、CcまたはBccを「管理人」のアドレスにするか。
Errors-Toヘッダはobsoluteだった気がします。
envelopeアドレスを指定するべし。sendmailに-fオプションに続けてアドレスを指定する。
URLリンク(sonic64.com)
444:nobodyさん
08/05/05 16:36:56
つーか、今時、open(MAIL,"| $sendmail -t")やErrors-To:とか前世紀に
書かれた古文書を元にCGI作るな。めーわくだ。
445:nobodyさん
08/05/05 18:19:44
批判だけならゾウリムシにもできる
例文または参考 URL ぐらい提示すればいいじゃない
446:nobodyさん
08/05/05 19:20:18
ただでは断る。
447:nobodyさん
08/05/05 20:15:30
>>446
しね
448:nobodyさん
08/05/05 21:17:57
役立たずなテキストに騙される処を指摘してやったのに随分な言い草だな。
449:BEET
08/05/05 21:36:20
URLリンク(z-z.jp) ここのスクリプト抜きたいんですけど、どうしたらいいのですか?
450:nobodyさん
08/05/05 21:39:44
>>449
むり
451:nobodyさん
08/05/05 21:57:12
>>449
ハッキングすればできるかもしれない。
452:nobodyさん
08/05/05 22:16:06
スクリプト抜くってどういう意味なんですか?
453:nobodyさん
08/05/05 22:44:54
ハァハァするんじゃないかな。
454:nobodyさん
08/05/05 23:21:45 V/xhfGfA
ftpで接続しないとスクリプトは抜けないでしょう
455:BEET
08/05/06 00:42:09
回答ありがとう。 ハッキングって.. 簡単なのかな? ソフトはできるだけ使いたくないな
456:BEET
08/05/06 00:45:09
追記なんですけど
このレンタル掲示板の管理パスをクラックされて、改竄されたんだけど、どうやってクラックしてるのかな?
457:nobodyさん
08/05/06 00:49:33 fJq/GBDg
(`・ω・´)??
458:nobodyさん
08/05/06 00:50:15
>>455-456
>>1を100回声を出して読め。
読み終わったら610と三ポールのミックスカクテル飲め。
459:nobodyさん
08/05/06 00:51:09 fJq/GBDg
(`・ω・´)ソフト使ってるだろww
460:nobodyさん
08/05/06 09:09:26
Windowsローカルに入れたActivePerlで
cpan > install XML::ATOM::Feed
したのに、それを500エラーになってしまいます
(useしてるところをコメントアウトすると通る)
moduschで見たら「存在しないか、ロード出来ない」っぽい
なぜでしょうか…?
461:nobodyさん
08/05/06 16:59:23
>>442
BCCで目的は達成できると思うけど、
自分のメールアドレスを、スパムを送りたい先などにされると
簡単にスパムの踏み台になるから気をつけてね。
462:nobodyさん
08/05/06 22:50:17 wGWcI8Lv
AUTOLOADってのを初めて使ってみたんです。
未定義の関数を読んだら無事AUTOLOADが呼ばれたんですが、
変数$AUTOLOADを参照するとGlobal symbol〜っていうエラーが出てしまいます。
AUTOLOADを使う場合はno strictしていいものでしょうか。
463:nobodyさん
08/05/07 00:05:35
use strict;
use warnings;
sub AUTOLOAD {
our $AUTOLOAD;
print $AUTOLOAD;
}
foo();
464:nobodyさん
08/05/10 23:18:32
URL転送なんだけど今こうしてます↓
#!/usr/bin/perl
print "Location: URLリンク(*****\n\n)";
これに転送するまでHTMLの<meta content="x">みたいに
一定時間ウェイトかける事って出来るのでしょうか?
465:nobodyさん
08/05/10 23:19:01
いいえ
466: ◆TWARamEjuA
08/05/11 01:16:36
転送するまでひと寝入りする。
467:nobodyさん
08/05/11 02:11:14
>>464
いい事いうじゃねえか。
出来るんだな?
今すぐ頼むぞ。
468:nobodyさん
08/05/11 13:18:10 yMOlxpUv
print qq{あいうえお @{[1+1]} かきくけこ };
無名配列のリファレンスとデリファレンスを使ってクォート内に式を埋め込めます。
これ気に入っててよく使うんですが、これのスカラーリファレンス版ってできませんか?
\$()
無名スカラーって存在しないんですかね。
いやそもそも@{[]}に式を埋め込めるのはそこをクォート内ではないと認識するからなわけで。
いや、う〜ん。確かこれなんかいい方法があったような期がするんですが。
469:nobodyさん
08/05/11 23:02:44 Vy6R2X5C
Perlスクリプトの処理が全て完了する前に
クライアントとの接続を明示的にクローズする方法は
ありませんでしょうか?
以下のようなことが実施したいです。
どなたかよろしくお願いします。
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "<html><body>なんちゃら</body></html>";
## ここで明示的にクライアントとのConnectionをクローズしたい。
## ここからクライアント側に影響がない時間がかかる別の処理を実施したい。
&HokaNoShori();
exit;
470:nobodyさん
08/05/12 01:08:40 CYOIx0A2
perlで重い処理をさせるのが困ります。
例えばパソコンの30%の能力だけ使わせるとかってできませんか?
471:nobodyさん
08/05/12 01:16:51
>>470
それは知らないけど、nice付けて起動とかしてみては?
472:nobodyさん
08/05/12 03:09:36
>>468
qq{ ${\do {1+3}} }
473:nobodyさん
08/05/12 04:50:44
>>469
close(STDOUT);
474:nobodyさん
08/05/12 10:21:48
>>469
fork
475:nobodyさん
08/05/12 16:03:50
WindowsXPでActivePerlを使って
クリップボードにあるテキストに処理を加えて
クリップボードに戻すプログラムを作ろうとしています。
Win32::Clipboardを使用しているのですが、Unicodeだと化けてしまいます。
Unicodeでも化けないで処理できる方法はあるでしょうか?
476:nobodyさん
08/05/12 16:08:19 CYOIx0A2
>>472
思い出した!
print qq{ ${ \(1+1)} };
でしたね。
なるほどなるほど。${}これでデリファレンスができるというわけだ。
477:nobodyさん
08/05/12 17:20:30
Win32::Clipboard が受け取るのは Shift_JIS 固定っぽいです
Encode でShift_JIS にして渡してみたらどうりますか?
478:nobodyさん
08/05/12 18:00:21
>>477
回答ありがとうございます。
Shift_JISにない文字も処理したかったので
Win32::Clipboardでは無理と言うことですね。
Win32::Clipboard以外でクリップボードを利用できるものはありますか?
479:nobodyさん
08/05/12 20:22:51
文字化けしないようにする方法教えてください
use LWP::Simple;
my $page = get('URLリンク(hogehogehoge.jp)');
getprint('URLリンク(hogehogehoge.jp)');
print $page
480:nobodyさん
08/05/12 21:36:53
>>479
ヒント:Jcode
481:nobodyさん
08/05/13 01:04:45
perl 文字化け でググれカス
482:479
08/05/13 03:44:42
エスジス保存しておいたソースファイルをEUCに変更保存してみたけど
何も変わんないですよ
483:nobodyさん
08/05/13 06:45:22
>>482
「ソースファイル」ってのが上の us-ascii で足りそうなコードのことだったら
SJIS → EUC しても何も変わんないですよ。
環境その他も書かれてないし、変換に興味なさそうなので
perl hoge.pl > test.html
して「まともなエディタで見れば文字化けしない」でいいのかも。
484:nobodyさん
08/05/13 13:57:38
>>464
Location:を表示する前にwaitをいれればおk
485:nobodyさん
08/05/17 19:31:00
$obj = new Class;
$obj = Class->new();
この二つの違いは何ですか?
486:nobodyさん
08/05/17 20:03:56
おんなじ。どっちのClassクラスのコンストラクタを呼んでるだけ。
Classってサブルーチンが定義されてるときに問題がおきることがあるので、
$obj = Class->new;
の形式のほうが推奨されるけど。
487:nobodyさん
08/05/17 23:09:13
>486
ありがとんです
488:nobodyさん
08/05/18 11:25:25
俺はコンストラクタを呼び出すときだけはnew Classってしてあとはぜんぶ$obj->sub()ってするかな。
489:nobodyさん
08/05/19 06:36:14
なんだか、急にCPANでエラーで全く動かなくなったので、いろいろ調べてみたら、
ERRNO.pmが、MSWin32-x86-multi-thread-5.00(Windows Updateでいつの間にか変わってた)を弾いてた。
とりあえず、ERRNO.pmを書き換える(!)ことで対処したんだけど、
他に同じトラブルあってる人いません?
490:がんちゃん
08/05/19 10:02:27
perlでImage::MagickのAnnotateを使って画像と文字を合成できたのですが
出来上がった画像を右クリックして保存しましたが
そのファイルが開けません。
何が原因でしょうか。宜しくお願いします。
491:nobodyさん
08/05/19 11:27:27
>>490
開けないとは具体的にどういうこと?
単に、変なファイル名(拡張子)で保存してしまって、ダブルクリックしても関連づけの問題で開けないってことではなくて?
492:がんちゃん
08/05/19 12:15:34
うっせーよ!それぐらい分かるっての!腐った回答してんじゃねぇよwww
493:がんちゃん
08/05/19 12:29:05
* *
* + うそです
n ∧_∧ n
+ (ヨ(* ´∀`)E)
Y Y *
494:がんちゃん
08/05/19 12:32:08
なんだここの人たちはこれぐらいの質問も答えられないの?
回答者が初心者のスレだったのか・・・
495:がんちゃん
08/05/19 12:35:01
* *
* + うそです
n ∧_∧ n
+ (ヨ(* ´∀`)E)
Y Y *
496:nobodyさん
08/05/19 14:06:12
print "Content-type: image/jpeg\n\n";
binmode STDOUT;
$image->Write('jpeg:-');
ソース晒せや。
497:nobodyさん
08/05/19 14:11:40
なにこの流れ・・・
498:nobodyさん
08/05/19 15:48:41
質問の仕方も知らないというか、質問の文章すら正しく書けない馬鹿が多すぎ
Perl云々の前に日本語学校行け
499:nobodyさん
08/05/19 15:59:52
\E
500:nobodyさん
08/05/19 16:39:50
はい、次
501:nobodyさん
08/05/19 16:41:56
>>498
お前の文章が一番変だわ
502:nobodyさん
08/05/19 18:36:38 82E4EJS9
すみません。ド素人です。
質問です。
Can't locate GD/Image.pm in @INC (@INC contains: C:/perl/site/lib C:/perl/lib .)
というソフトウェアエラーが出て、CGIを実行できません。
どうかどうか、教えてください。
503:nobodyさん
08/05/19 18:38:59
GD を入れてください
はい次
504:nobodyさん
08/05/19 18:39:34 82E4EJS9
GDは入れてるんですけど、image.pmってのがなにか、わかんないんです。。。
505:nobodyさん
08/05/19 18:44:49
GD-Image-Thumbnail でも居れておきゃえぇんとちゃうのん?
506:nobodyさん
08/05/19 18:45:58 82E4EJS9
505さん ありがとうございますぅやってみます。
507:nobodyさん
08/05/19 18:47:44
URLリンク(search.cpan.org)
508:nobodyさん
08/05/19 18:54:23 82E4EJS9
507さん。。ありがとうです。
けど、このページの、なにをどうすればいいのか。
わかりません
どうしようもない素人なので。。
509:nobodyさん
08/05/19 19:12:16
*.pmってのはPerlモジュール
エラーの内容は「このモジュールがみつからないよパパ」
→インスコor場所確認
とりあえずモジュールが入ってるか確認する
→ぐぐる
入っていない場合、モジュールをインスコする
→ぐぐる
入っている場合、パスを確認する
→ぐぐる
510:nobodyさん
08/05/19 19:26:15
GDのバージョンを2.39に上げれば解決。
511:nobodyさん
08/05/19 19:58:48
「初心者」「素人」は分からないからフルサポートしてもらえる理由になりません。
512:nobodyさん
08/05/19 20:03:39 82E4EJS9
GD2.39の中のGD.pmとGDフォルダを /perl/libの中にドラック&ドロップしてるんです。
これは、どこかのサイトに書いてあったので。しました。
そしたら、エラーがでて。GD/Image.pmがどうのこうのとなってまして。
505さん507さん509さん510さんの言葉も、正直、理解しきれてない状況です。
まず、インスコというのが、コマンドプロンプトでするらしいとどこかに書いてて、
してみたんですけど。まず、「ppm」とすると、perlpackagemanagerが起動して、
その中に、GDがなくて。どやってインストールしていいのかも、わかんない感じです。
すみません長々と。どうかお助け願います。。
513:nobodyさん
08/05/19 20:03:43
ローカルで試そうとしてるやつが、
どうしようもない素人を名乗るなよ。
向上心ねぇのか
514:nobodyさん
08/05/19 20:16:06
>>512
URLリンク(www.bribes.org)
ここへいってら。
それができたら、こっちも回っておくように。
URLリンク(theoryx5.uwinnipeg.ca)
515:nobodyさん
08/05/19 20:18:47 82E4EJS9
514さんありがとうございます。
読んでます。
516:nobodyさん
08/05/19 21:08:55 82E4EJS9
やっぱりエラーになります(涙
517:nobodyさん
08/05/19 21:35:03
リポジトリを増やしたのだからインストールできるはずだが。
掲示板なんだから、レスに主語と述語をはっきり書いてくれ。
とりあえず、頭にエラーが出たのか?
518:nobodyさん
08/05/19 22:17:16
良く読んでないけど、
スタート→すべてのプログラム→ActivePerl→Perl Package Managerで
必要なものをクリック、クリック!した方が楽で簡単だよ。
519:nobodyさん
08/05/19 23:01:51 82E4EJS9
perl package managerの中に GDが見当たらないんです。
コマンドプロンプトで CPANから install GDってしても
できないんです。
GD/image.pmが@INCに無いっていうエラーが出るんです。517さん。
520:nobodyさん
08/05/19 23:13:22
>>519
>>514サイトをよく読んでppmにリポジトリを追加すると、GD 2.39がインストールできるようになる。
ちゃんとリポジトリを追加したか?
それでも出ないというのなら、ppmに問題があることになる。
521:nobodyさん
08/05/19 23:23:58
URLリンク(mikiho.jp)
serach のとろを
s GD
としてくださいな
これでも出来なければ諦めてください
サポートしきれないです
522:nobodyさん
08/05/20 01:25:53
URLリンク(pub.ne.jp)
Perl 5.8ならなんか面倒そうなんだけどこれかな?
523:nobodyさん
08/05/20 03:52:12 U/T3y6km
ここ見て、Win用のGD-2.39来てるのかと思い、threory58に行くも2.35しかないじゃないか!?ぷんぷん。
ふと、PPM-Repositoriesを0.14に上げて見るとbribesなるレポがあるので、これを見に行くと、
おおー、結構新しいの来てるじゃないか〜と、調子にのってperl areaのmoduleもUpしまくる。
しかし、Compress-ZlibをUpすると、Bandleされてたversionを上書きしてしまい、
それ以降ppmがtar.gzファイルを展開できなくなってしまった。(今まで見たことないエラーでPPMが落ちる)
とゆうことで、今やっと再インストールと、(自分のよく使う)各種モジュールのインストール、最新版へのUpデートが終わった。
なんとか、Compress-Zlibも2.010に上げる事ができた。
ふう、疲れたぜ・・・・。
524:nobodyさん
08/05/20 04:15:25
そうなんだお疲れちゃん
525:nobodyさん
08/05/20 14:16:09 XrCi5l42
519です。
いろいろサポートいただいて、できました。
ほんとに感謝してます。ありがとうです。
526:nobodyさん
08/05/21 00:33:37
phpのexplodeみたいに、
正規表現を使わずに高速に動作するsplitの代わりはないでしょうか?
527:nobodyさん
08/05/21 01:39:24
substrでループさせる自前の関数でも作れば?
528:nobodyさん
08/05/21 01:41:57
それって速いのかな。。
indexとsubstrを併用してちょっと試してみるか。
529:nobodyさん
08/05/21 11:18:20 crauFAgn
モジュールが一切入っていないレンタルサーバで、xmlを読み込もうとしています。
ググってみると、どこもXMLとLWPというモジュールを読み込む事が前提になっているようなのですが、
何も無い状態でXML
530:529
08/05/21 11:19:42
すみません途中で送信してしまいました…orz
モジュールが何も無い状態でXMLを読み込むために
参考になるようなサイトがありましたら、ご教示下さい。
宜しくお願いします。
531:nobodyさん
08/05/21 12:00:10
ソケット使ってゴリゴリ書くしか無いんじゃないかな
532:nobodyさん
08/05/21 12:06:34
モジュールが一切入っていないレンタルサーバでソケットが使えるようにインストールされてる
とはとても思えないが・・
533:nobodyさん
08/05/21 12:14:45
xmlそのものについても調べてる状態なんですが、
どうも事実上無理っぽいということですかね…orz
お騒がせしました、ありがとうございました。
534:nobodyさん
08/05/21 13:46:16
php が動くなら php 普通にネットワーク経由でファイル開けるので php も考慮してみれば?
535:nobodyさん
08/05/21 23:33:50
>>529,530
XMLを読み込むだけなら、XML::TreePPでXMLが読める。
別サイト上にあるXMLを読むならLWP等が必要。
536:nobodyさん
08/05/22 08:42:14
質問です。Snアップローダー(URLリンク(sugachan.dip.jp))の
ファイル個別HTMLを作成する部分で
$buff = "<html><head><title>$filename</title></head><body>";
$buff .= qq|Download <a href="./$filename">$filename</a>|;
$buff .= '</body></html>';
(ソースの760行目付近です)
特定の拡張子のみ別のHTMLコードを書き出したいのですが
if文で$filename等試してみましたが上手く行きませんでした
どなたか分かる方宜しくお願いします
537:nobodyさん
08/05/22 10:13:46
改造スレいけ
538:nobodyさん
08/05/22 12:40:41
$buff .= qq|Download <a href="./$filename">$filename</a>|;
こういう書き方もあるんだ。勉強になったw
539:nobodyさん
08/05/22 13:18:50
毎行クォート変えるくらいならヒアドキュメント使えよ
540:nobodyさん
08/05/22 13:25:55
ヒアドキュメントもコーディングの桁揃えと、HTMLの桁揃えでタブを使うと、すっきりする方法
がなかなか見つからない。
541:nobodyさん
08/05/22 13:40:38
>if文で$filename等試してみましたが上手く行きませんでした
どう試して、どういう結果になったのか書かないと。
基本だと思うが。
542:nobodyさん
08/05/22 17:17:18
>>540
普通に cookbook にある解ではダメなのか?
URLリンク(www.unix.com.ua)
543:nobodyさん
08/05/24 13:22:00 CztaXqIN
セッション変数の受け渡しについての質問です。
print <<EOT
<form action="URLリンク(localhost)" method="post">
<p>
<label for="nm">お名前:</label>
<input type="text" name="namae" id="nm"><br>
<label for="ma">メール:</label>
<input type="text" name="email" id="ma">
</p>
<p>
<input type="submit" value="送信">
<input type="reset" value="リセット">
</p>
</form>
EOT
;
これらのフォームデータをセッション変数としてsession.cgiに受け渡したい
のですが、どのようにすればよいでしょうか?
CGI::sessionモジュールを利用して、session.cgi側で
$hoge=$cgi->$session->param('namae');
などとすればセッション変数として受け取れる事は分かったのですが、
フォームからの受け渡し方が分かりません…。
よろしくお願いします。
544:nobodyさん
08/05/24 13:38:27
hiddenで投げれ
545:nobodyさん
08/05/24 13:41:36
>>543
どれがセッション変数なの?
546:543
08/05/24 13:47:45 CztaXqIN
>>544
hiddenフィールドを利用すればセッション変数として受け渡されるのでしょうか?
>>545
「お名前」や「メール」フォームに入力された文字列をセッション変数として
session.cgiで受け取りたいと考えています。
547:nobodyさん
08/05/24 13:47:48
CGI.pmでデータを受け取るところから勉強を始めるべき。
セッションはその後。
548:nobodyさん
08/05/24 13:49:52
・hidden
・GET
・cookie
わざわざCGI::session使うくらいなんだから、普通はcookie使うんじゃね?
549:543
08/05/24 13:53:40 CztaXqIN
>>547
すいません。>>543の書き込み微妙に間違っています。
$hoge=$cgi->$session->param('namae'); のところ
通常データの受け取りは
$hoge=$cgi->param('namae');
セッションでの受け取りは
$hoge=$session->param('namae');
の間違いです。
550:nobodyさん
08/05/24 14:04:47
>>549
受け渡しの情報が知りたいって言ってるのに、
受け取りのソース書いてるから、それを指摘されてるんだよ。
>基本的にはセッション系モジュールの役割は、特定のキー=セッションIDに紐付けて、
>データを保存したり、読み込んだりといったことです。
>セッションIDの受渡しはCGI側でする必要があります。
ヒント:URLリンク(digit.que.ne.jp)
551:543
08/05/24 14:05:03 CztaXqIN
cookieにセッションIDやもっておきたいデータ(今回の場合、お名前やメール)を記述しておき、
サーバ側から要求があった時点でクライアントはそのcookieのデータを受け渡す
といったイメージで良いのでしょうか。
うぅ、難しい。。。
552:543
08/05/24 14:13:48 CztaXqIN
>>550
>受け渡しの情報が知りたいって言ってるのに、
>受け取りのソース書いてるから、それを指摘されてるんだよ。
データを受け渡す側のソースが>>543で、受け取るソースがsession.cgiだと
認識してるのですが…。間違っているでしょうか。
もしかしたら私が勘違い?をしているのかも?
553:nobodyさん
08/05/24 14:14:00
>>551
正直、目的に対して技術が足りなすぎる。イヤミじゃなくてね。
トラブル起こす前に、オライリーのCGIプログラミング読破オススメ。
554:nobodyさん
08/05/24 14:18:21
>>552
>受け取るソースがsession.cgiだと認識してるのですが…。
少なくてもこのソース中でセッションIDはどこにも発行してないでしょ?
後は調べなさい。
555:554
08/05/24 14:19:15
ごめんミスった。
× >受け取るソースがsession.cgiだと認識してるのですが…
○ >データを受け渡す側のソースが>>543で
556:543
08/05/24 14:19:38 CztaXqIN
すいません。もう少し勉強しなおしてきます。
みなさん、有難うございましたー・・・
557:543
08/05/24 14:23:19 CztaXqIN
>>554
あ、ソースの一部分しか乗せてなかったためです!
use CGI::Session qw/-ip_match/;
my $session=CGI::Session->new(undef,undef,{Directory=>'./session'});
$session->expire('+1m'); #有効期限は1分間
$session->param('name','john'); #セッション経由で引き渡す項目と値
my $cgi=CGI->new;
print $cgi->header(-charset=>'UTF-8',
-cookie=>$cgi->cookie(-name=>'CGISESSID',
-value=>$session->id,
-expires => '+3M')),
#cookieにセッションidを保管
$cgi->start_html(-lang=>'ja',
-encoding=>'UTF-8',
-title=>'CGI.pm使用/cookie'),
$cgi->p('session id: '.$session->id.'<br/>',
'name: '.$session->param('name').'<br/>',
558:543
08/05/24 14:24:17 CztaXqIN
続き
print <<EOT
<form action="URLリンク(localhost)" method="post">
<p>
<label for="nm">お名前:</label>
<input type="text" name="namae" id="nm"><br>
<label for="ma">メール:</label>
<input type="text" name="email" id="ma">
</p>
<p>
<input type="submit" value="送信">
<input type="reset" value="リセット">
</p>
</form>
EOT
;
$cgi->end_html;
#end
すいません…!
559:nobodyさん
08/05/24 14:27:18
めんどくさいし、合ってる保証ないけど、適当にフォローしてみる
追記 use CGI;
追記 my $cgi = new CGI;
× my $session=CGI::Session->new(undef,undef,{Directory=>'./session'});
○ my $session=CGI::Session->new(undef, $cgi, {Directory=>'./session'});
560:nobodyさん
08/05/25 02:16:54
htmlのフォームデータをセッション変数に格納して利用するには
htmlのフォームデータをpost→受け取ったデータをセッション変数を格納するCGI
→それらのセッション変数にアクセス(利用する)CGI
の流れがいるのでは?
自信ないけど
561:nobodyさん
08/05/25 19:58:56 sAYmYKjS
perlのセッション管理はphpに比べるとかなりめんどい
もちろん細かく制御するには向いてるんだが始めとっつきにくいかもなー
562:nobodyさん
08/05/26 13:29:09
>>561
>>543の質問を分かりやすくPHPで説明すると、
$_REQUESTの内容を$_SESSIONで受け取るにはどうしたらいいんですか?
ということ。
563:nobodyさん
08/05/26 19:00:45 BXwqNwjP
すみません。質問です。
Global symbol "%in" requires explicit package name at C:/ApacheGroup/〜〜.cgi line 375, <DATA> line 855.
というソフトウェアエラーが出続けてるんですが。
どうすればいいでしょう。
どなたか教えてください〜。
564:nobodyさん
08/05/26 19:09:34 fmVA2Qe8
先生方! 質問よろしいでしょうか!
open(OUT,"+< log.txt");
eval{flock(OUT, 2);};
eval{truncate(OUT, 0);};
seek(OUT, 0, 0);
print OUT @log;
eval{flock(OUT, 8);};
close(OUT);
今はこのように通常のテキストでログの上書き保存をしているのですが、
私はgzipで圧縮して上書き保存をしたいのです!
しかしどれだけGoogle先生に訊いてもgzipでの保存方法を教えてもらえません! あの先生はケチです!
もう先生方だけが頼りなんです! 一体どうすればgzipでの保存が可能になるんでしょうか!
565:nobodyさん
08/05/26 19:18:18
>>563
URLリンク(xn--lckja1b6r.jp)
>>564
URLリンク(xn--lckja1b6r.jp)
566:nobodyさん
08/05/26 19:32:47
Archive perl でググればでてくるじゃないの
567:nobodyさん
08/05/26 23:41:19
>>563
英語が読めないなら駱駝本を買うべきだ。
568:nobodyさん
08/05/27 11:06:43
ラクダを漢字で書かれると困ります (><;)
569:nobodyさん
08/05/27 19:27:42
{
$global_foo = $foo;
$global_bar = $bar;
my $foo;
my $bar;
$foo = $_[0];
$bar = $_[1];
$foo = $global_foo if $foo eq undef;
$bar = $global_bar if $bar eq undef;
}
をコンパクトにまとめたいが、バグが混入しそうでいやん。
570:nobodyさん
08/05/27 19:44:24
{
my $global_foo = $foo;
my $global_bar = $bar;
$foo = shift || $global_foo;
$bar = shift || $global_bar;
}
571:nobodyさん
08/05/27 19:55:45
>>569-570
$foo eq undef もたいがいだが
shift || $global_foo だと $_[0] が '0' の時に挙動変わるな。
572:nobodyさん
08/05/27 20:06:24
{
my $global_foo = $foo;
my $global_bar = $bar;
$foo = defined( $_[0] ) ? $_[0] : $global_foo;
$bar = defined( $_[1] ) ? $_[1] : $global_bar;
}
こうか?
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4937日前に更新/211 KB
担当:undef