トップページ⇒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
0554nobodyさん03/04/03 17:38ID:???
$POINT{($name)[0]}形式でポイントをカウントしているのですが
foreach (sort {$POINT{$b} <=> $POINT{$a}} keys %POINT)
でポイントの大きい順にソートできるのはわかるのですが
$name順にソートするにはどうしたらいいでしょうか?
0555403/04/03 17:43ID:addlh6nt
質問っす。
use Benchmark;として得られたベンチマーク結果、
no1: 5 wallclock secs ( 4.40 usr + 0.01 sys = 4.41 CPU) @ 22727.27/s (n=100000)
このときの、usr と sysってなんすか?
055645703/04/03 17:49ID:???
>>551
open(FILE,"ip.txt");
@data = <FILE>;
close(FILE);

if(@data = "/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/"){
&connection;
}else{
&unconnection;
}

こうですね。でも、なぜif(@data = "/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/")が代入演算子でするのでしょうか。
テキストのデータが*.*.*.*だった場合の処理だから比較演算子ではないんでしょうか?
0557nobodyさん03/04/03 17:51ID:???
>>457

#!/usr/bin/perl

open(FILE, "ip.txt");
$data = <FILE>;
close FILE;
if($data =~ /close/){
$dotti='非公開';
}else{
$dotti='公開';
}
print "content-type: text/html\n\n";
print "<html><head><title>$dotti</title></head>\n";
print "<body><h1>$dotti</h1></body>\n";
print "</html>\n";
exit;
0558403/04/03 17:52ID:addlh6nt
>>553
open(FILE,"test.dat");
chomp($text =<FILE>);
close(FILE);
print qq/i="$text"\ndocument.form.txt.value=i/;

こんな感じにしたらどうだろうか?
0559nobodyさん03/04/03 17:54ID:???
>>556
いい加減にしろや
なんで今度は配列になってんだよ
>>557でできるからもう来るな!
056045703/04/03 17:56ID:???
>>559
http://www.kent-web.com/perl/chap6.html
ここに@*という配列変数にセットするって書いていたので。。。
0561bloom03/04/03 18:00ID:iUh0kMHD
http://www.agemasukudasai.com/bloom/
0562531 CGIでwww上のhtmlソースを取得03/04/03 18:01ID:507cBmxs
答えて下さる方がもういらっしゃらないようなので
また自力で頑張ろうと思います。m(__)m
0563nobodyさん03/04/03 18:02ID:???
>>560
配列ってのは複数のデータを格納するもの。
IPアドレスかcloseという語のどっちかなんでしょ?
それならスカラ変数でいいの。
056445703/04/03 18:03ID:???
>>559
すいません。あと2つだけお願いします。
$data =~ /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/
これですが、「~ 」はどういった意味なんでしょうか?これがないとできなかったんですが、重要なものですか?
それと、なんで「==」ではだめなんでしょうか?
0565nobodyさん03/04/03 18:03ID:???
>>549の相手をしてほすぃ
056645703/04/03 18:03ID:???
>>563
なるほど、、、ありがとうございました
0567nobodyさん03/04/03 18:04ID:???
>>564
正規表現にあてはめる、って解釈が一番簡単かも
0568nobodyさん03/04/03 18:05ID:???
>>562
>>531に書いてある方法を使うためには条件があるのはわかるよね?
君の環境も何もわからなきゃ誰もわからないの
0569nobodyさん03/04/03 18:06ID:???
>>564
パターンマッチ で調べれ
057055303/04/03 18:08ID:os6gOz9a
>>558
すいません。それで試しても結果は変わりません。
ファイルから読み込まずにやるとうまくいくのですが・・・
057145703/04/03 18:08ID:???
>>569
あ、ホントですね。本にありました。
パターン結合演算子「=~」ですか、理解しました。
どうもありがとうございました。
0572531 CGIでwww上のhtmlソースを取得03/04/03 18:10ID:507cBmxs
>>568

おっしゃる通り説明不足でした、申し訳無い..
勉強して出直してきます。m(__;)m
0573nobodyさん03/04/03 18:12ID:addlh6nt
>>531
ttp://hex51.darktech.org/cgi-bin/ubbs/bbs.pl?frame=2&base=44&no=44
0574nobodyさん03/04/03 18:23ID:???
>>564
めちゃくちゃにも程がある
配列も知らん香具師に何ができるんだ?
それにパターンマッチ云々知らなかったとしても
>これですが、「~ 」はどういった意味なんでしょうか?これがないとできなかったんですが、重要なものですか?
↑この発言はないだろ。
それぞれ一文字一文字にちゃんと意味があるに決まってるだろ?

聞く前にネットなり本なりで少しは調べろ
特に配列なんてのは大概一番最初の方ででてくることだ
0575その認識は改めたほうがいいよ。03/04/03 18:44ID:???
その認識は改めたほうがいいよ。
0576馬糞はんばーぐJr.03/04/03 18:52ID:???
>>575

誰に言ってるんだおみゃーは
0577531 CGIでwww上のhtmlソースを取得03/04/03 18:58ID:507cBmxs
>>573

わ.. そのCGIをローカルサーバと無料レンタルサーバで
試してみたところどちらでもちゃんと動きました。(汗
ソースもシンプルなのでとても参考になります。

このCGIを参考に自分のプログラムが動かなかった原因も
調べてみます、感謝っす!m(_ _;)m
0578nobodyさん03/04/03 19:04ID:???
>>553
553のスクリプトをWinXP+ActivePerlの環境で実行したら
i="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
となったので、そのスクリプトで問題ないのでは?
0579nobodyさん03/04/03 19:06ID:???
>>555
何だろ、俺も知りたい

UN*X の time(1) なら
user ... 実行に要した時間
sys ... システムのオーバーヘッドに要した時間
だけども。同じかな?
0580 ◆WI1n/FSUiE 03/04/03 21:45ID:???

Perlの最新版って5ですか?

それとも6ですか?

0581nobodyさん 03/04/03 22:00ID:???
>>580
おたくなぁ、同じこと何回もかいてるんじゃねぇよ
現在使える分は5.8
6は使うならば自分でperlをコンパイルせねばならんのだからおたくのレベルにはかんけーねーよ
0582nobodyさん03/04/03 22:07ID:???
>>580
ttp://www.perl.com/
ここへ行って一生最新バージョンのチェックをし続けて下さい。
0583nobodyさん03/04/03 23:31ID:LZizHVyk
掲示板などで半角カナを使いたいのですが使用すると文字化けしたり
全角カナに強制的に変換されたりします。どうやって表示させればよいのでしょうか?
0584nobodyさん03/04/03 23:38ID:???
強制的に変換したり、文字化けさせたりしなければいい。
0585nobodyさん03/04/04 00:38ID:???
>>583
kentとか借り物つかってんの?
0586nobodyさん03/04/04 00:43ID:MGOn1k3A
>>585
ここのUP掲示板です。
http://www.big.or.jp/~talk/t-club/soft/index.html
0587nobodyさん03/04/04 00:48ID:???
配布スクリプト改造の話題はこちらで

【 スクリプト改造工房 PART 6 】
http://pc2.2ch.net/test/read.cgi/php/1047806915/
0588nobodyさん03/04/04 00:50ID:???
>>587
スマソ。よく見てませんでした。
0589nobodyさん03/04/04 01:21ID:???
UserAgentを書き換えるにはどうすればいいんですか?
0590nobodyさん03/04/04 01:41ID:???
>>589
Perlとは関係ありません
0591nobodyさん03/04/04 01:47ID:???
>>590
Perlでもできるだろ・・・
0592nobodyさん03/04/04 01:52ID:CT5BhxQd
ページの再送信回避の方法ってありますか、
できればGETにしたくないのですが。
0593nobodyさん03/04/04 01:59ID:???
>592
完全な方法はない。
保存データとの比較が最も安全ではあるが、間に別のデータが挟まれば結局無意味。

無難な方法はLocation。
0594nobodyさん03/04/04 01:59ID:???
Locationするとか前回のと照らし合わせて同じだったらエラーにするとか
0595nobodyさん03/04/04 01:59ID:???
>>589
UserAgentの文字列を別の文字列に書き換えればいい
0596nobodyさん03/04/04 02:00ID:???
>>595
ぷ
0597nobodyさん03/04/04 02:00ID:???
>>592

話が見えない。
0598nobodyさん03/04/04 02:01ID:CT5BhxQd
>>593
ありがとう。locationで飛ばしてみます。
0599nobodyさん03/04/04 02:04ID:CT5BhxQd
>>592=598ですが、うまくいきました。thx
0600brain03/04/04 02:28ID:???
eBrain21.comは、インターネットユーザーがホームページを
掲載するにあたって必要なサーバースペースを有料レンタルしています。
お客様に快適なサーバーを提供するためにさまざまなホームページの目的に応じて、
単なるホームページスペースだけではなく、動画やゲームまたは個人放送はもちろん、
そのツールとしてCGI、PHP、SSI、SQLデータベースなどあらゆるサーバースペースを提供しております。

http://www.ebrain21.com/

[email protected]
0601nobodyさん03/04/04 04:54ID:i3RHe7j/
質問させてください。
アパッチの1.3.27でActivePerlを使っていて、OSはXPです。
自宅サーバを使って、HPを作っているのですがカウンタが動かないんです。
掲示板は動いているので、CGIはちゃんと使えていると思ったのですが
なぜかカウンタだけ「×」がでたまま動いてないんです。
KENT WEBさんの夢カウンタを使用していて、設定や記述は何度も見直した
のですが、チェックモードでCGIまでのURLを打ち込んでみてもCGIファイルがその
まま開いてしまうのです。
すみませんが、何か心あたりがあえば教えてください。

ちなみに、前もHPを作ったことがあるのですが(同じパソコンで)その時
はちゃんと動きました。そのときは、知り合いに同じ質問をしてフォルダ
オプションから関連付けをしたら動いたような記憶があるのですが、OSを
再セットアップしたのでまた同じ症状になってしまっています。前聞いた
人間は「忘れた」とだけ言って相手にしてくれません(涙
検索しているのですが、なかなか見つかりません。すみませんが、
よろしくお願いしますです。
0602nobodyさん03/04/04 05:08ID:???
>>601
>CGIファイルがそのまま開いてしまうのです。
どういう意味?ソースが表示されてしまうっていうこと?
060360103/04/04 07:20ID:i3RHe7j/
そうです。CGIファイルをメモ帳で開いた時のものが出るんです。
0604nobodyさん03/04/04 07:32ID:???
>>601
スレ違いだっつーの。
ここでCGIの質問するな。
060560103/04/04 07:36ID:i3RHe7j/
それは大変失礼しました。
初心者なので、perlと関係があると思ってました。
別板行きます。
0606nobodyさん03/04/04 08:12ID:jZjztjzX
perlの最初に

use Win32::API;

と、書かれているのですが、これを読み込んだ瞬間にperl.exeのウインドウが閉じてしまいます
どう対処したらよいでしょうか?
0607nobodyさん03/04/04 09:00ID:???
>>605
それ以前にXPで鯖公開したらライセンス違反にならないか?
0608nobodyさん03/04/04 09:11ID:???
独り言だけど、
>>605 を読んで、初心者とはそう言うものなのかと初めて知った、春の日の朝。
0609nobodyさん03/04/04 09:12ID:fwRQKvSx
KENT氏のaskaBBSの、$flagはどういう役割を果たしてるんでつか?
0610bloom03/04/04 09:46ID:ZGDQypNs
http://www.agemasukudasai.com/bloom/
0611nobodyさん03/04/04 09:48ID:???
出た、bloom
そろそろ赤字でIP晒して欲しいな。
0612nobodyさん03/04/04 11:02ID:lpjcObWV
データと、CSV形式で保存したいと思ってます。
で、CSV形式つっても、アプリによって微妙に差があるじゃないですか?

そこで、自分はエクセル用のCSVにしたいと思ってるんですが、
その際の仕様はどーすればいいんでしょうか?

●値は,で区切る
●値の中に"があるときは""と入力
●改行はそのまま改行を入れる。
●数字以外はセルの値を""でくくる

・・・でOK?
0613nobodyさん03/04/04 11:07ID:???
perlと関係ねー
0614nobodyさん03/04/04 11:37ID:T4cPGriS
keys 関数
 keys関数は、ハッシュ変数のすべてのキーをリスト値として返します。
@key = keys( %hash );
 キーの格納には乱数を使った手法が使われるため、ハッシュ全体を出力する場合、その順番は保証されません。ですから、@key には %hash のキーが順序を無視して格納されます。

順番通りに格納すればいいのに、どうしてこういう仕様になってるんですか?
perl作ってる人は何を考えてるんですか?
0615nobodyさん03/04/04 11:37ID:???
>>612

>>2
> [お薦め]
>  ・Perlメモ: http://www.din.or.jp/~ohzaki/perl.htm ★読んどけ
061661503/04/04 11:39ID:???
間違えた>>3だ。

>>614

その「perl作ってる人」に聞け
0617nobodyさん03/04/04 11:46ID:???
>>614
ハッシュだからに決まってるだろ。
0618nobodyさん03/04/04 12:12ID:???
>>614
メモリ効率や実行速度を優先させたから。
0619nobodyさん03/04/04 13:05ID:???
>>609スルーかよ
0620nobodyさん03/04/04 13:12ID:???
>619 なんでKENT氏のaskaBBSなんてものをわざわざ探して調べてやらにゃならんのだ
0621nobodyさん03/04/04 13:16ID:???
(´・ω・`)…
0622nobodyさん03/04/04 13:28ID:???
>>620
それがこの板の住人の仕事であり、使命でもあるから。
0623nobodyさん03/04/04 13:29ID:Oo/SV5Mj
getpw... getgr...という組みこみ関数のことなんですが、/etc/passwd, /etc/group
のパスを指定することができない(みたい)ので、テストで非常に難儀します。
サンプルのpasswd,groupファイルを読ませる方法はないのでしょうか。仕方なく
Unix::ConfigFileを使っているのですが、重いです。非常に便利で、なおかつどこで
も使える組みこみ関数なだけに惜しい。
062425103/04/04 13:49ID:???
>>606
Win32::APIが入ってないんじゃないの?

>>612
http://www.din.or.jp/~ohzaki/perl.htm#CSV2Values
http://www.din.or.jp/~ohzaki/perl.htm#CSVfromValues

>>614
配列みたいに、キーにはa>bみたいな上下関係無いもん・・・
何をもっての順番なのか意味不明・・・
0625nobodyさん 03/04/04 13:59ID:???
>>614
>キーの格納には乱数を使った手法が使われるため、
って笑われぞ。ちゃんと順番には出てくる。
メモリーの格納順であって、キーの順番になっとらんだけだつーの(w
0626nobodyさん03/04/04 14:11ID:???
>>607
え?ほんとうですか?
0627nobodyさん03/04/04 14:37ID:???
>>626
IISで公開したら違反になるかも。
0628nobodyさん03/04/04 14:43ID:???
>>627
IISってなに?
俺はXP+Active Perl+AN httpdで公開してるけど、、
マズいのかなぁ。
0629nobodyさん03/04/04 14:47ID:???
s
0630nobodyさん03/04/04 14:48ID:n4Opp+jH
ログイン・ログオンなどについて熱く語ってるサイトあったら教えてください。
ヤフーのログイン・ログオンはどういう仕組みなのかな?
0631nobodyさん03/04/04 14:57ID:???
>>630
そりゃ Perl と全く関係無いとは言わないけれど、
そもそも Perl スレに書き込む話題か?
0632nobodyさん03/04/04 15:00ID:???
>>628スルーでつか?
0633nobodyさん03/04/04 15:07ID:???
>>632 なんで>>628氏がライセンス違反になるかなんてわざわざ探して調べてやらにゃならんのだ
0634nobodyさん03/04/04 18:42ID:???
>628
Win板のXPスレで聞いてこい。
0635nobodyさん03/04/04 18:47ID:jyfKo/rm
>>632
スルーでつが?それが何か?
063660603/04/04 19:09ID:???
>>624

試しにperl.exeを起動して、最初の一行目に
use Win32::API;
と、入力してリターンを押すとウインドウが閉じてしまってエラーメッセージすらも見れません

win32::apiが入ってない場合はどのようにすればいいのでしょうか?
よろしくお願いします(´Д⊂)
0637nobodyさん03/04/04 19:16ID:???
>試しにperl.exeを起動して
>ウインドウが

この時点で俺はお手上げだなぁ。
とりあえず、その perl.exe とやらはどこから入手したのさ?
063860603/04/04 19:33ID:???
>>637

ActivePerl-5.6.0.623-MSWin32-x86-multi-thread.msi

のセットに入っている奴です
0639nobodyさん03/04/04 19:41ID:???
>>606
っつーか、perl.exeのウインドウ って何?
0640nobodyさん03/04/04 20:50ID:???
たぶん、>>606 はコマンドプロンプトを知らんのでしょう。
perl.exeを*ダブルクリックで*起動して、perlがstdin待ちになったところへ
use Win32::API;と入れて、すく終了してウィンドウが閉じたと。漏れはUNIX派なので
ここらへんよく分からんが、WindowsだとCtrl-d押さなくても終了になるんかな。

コマンドプロンプトを知らん人が、Win32::APIなど使えるわけありません。あきらめ
た方が時間の節約になりますYO。
0641nobodyさん03/04/04 20:54ID:???
皆わかってて、からかってるんだってば。

優しい人発見。 >>640
0642nobodyさん03/04/04 21:11ID:???
>>641
なんだそうか。ワリィワリィ。
064360603/04/04 21:22ID:???
とりあえず、ある***.plってのを動かしたいんですが
一種類だけ動かないんで聞いてみました

0644nobodyさん03/04/04 21:28ID:OlDxyviA
ページが変わっても変数や配列を保持しておくことができますか?
例えばあるページで使用した$test1=10を次のページでも
form変数やurl変数で送らずに使用したいです。
可能でしょうか?教えてくださいまし。
0645nobodyさん03/04/04 21:29ID:???
>>643

>>640の
> たぶん、>>606 はコマンドプロンプトを知らんのでしょう。
についてはどうかね?
0646nobodyさん03/04/04 21:30ID:???
>644
ファイルに保存しる。
0647nobodyさん03/04/04 21:30ID:???
>>644
ファイルに記録しておく
0648nobodyさん03/04/04 21:32ID:???
>>644
ファイルに書き出しておく
0649nobodyさん03/04/04 21:33ID:???
>>646-648
言い方はいろいろだけど、やってることは同じなのねん。
0650nobodyさん03/04/04 21:36ID:???
>>644
データをプーリングしておくためのサーバを起動しておく。
で、現ページでPUTして次ページでGETする。
0651nobodyさん 03/04/04 21:47ID:???
>>640
レベルはそんな所であろうな・・・
一応Un?xで動かないとか訳解らん事言ってるんじゃないのな・・・

ppm install win32-api

とコマンドプロンプトに打ち込めばモジュールはインスコ出来るけど
ttp://member.nifty.ne.jp/hippo2000/perltips/module_install.htm
>606はココ読んで勉強しなさい
065260603/04/04 22:05ID:???
>>651

解決しました
time-hiresとhttp-liteは入れたんですが、一つ足りなかったようですね
なんか勉強不足で訳分からない事言ってたと思いますが
ありがとうございます
0653nobodyさん03/04/05 01:50ID:???
自作CGIを評価してくれるサイト知りませぬか?
■ このスレッドは過去ログ倉庫に格納されています