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

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

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん04/08/22 01:41ID:???
Perlのコーディングで困ってる人のスレです。
誰もが最初は初心者。
だからって、初心者に甘んじた質問の仕方は意味がないよ。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。

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

最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。

過去ログやお勧めサイトは >>2-10
081180304/09/30 14:56:10ID:???
>804
そうですか、友達に負担がかかるからやめろと言われましたが、騙されたようですね_no

もう一つ質問ですが、kent-webのCGIはダメポと聞きますが、Perlとしてどこがダメポなんですか?
0812nobodyさん04/09/30 15:05:59ID:???
使ったこと無いから落としてみた。
出力されるHTMLのインデントとかはもう見てらんないな。
Perlについては詳しく無いから↓の人詳細よろ
0813nobodyさん04/09/30 15:20:43ID:???
>>811
スレ違い
0814nobodyさん04/09/30 15:55:47ID:???
>>811
そんなこと聞いてどうするよ?
kent最高だから使っとけ
ついでにレスキューも使っとけ
081581104/09/30 15:58:51ID:???
>812
トンクス!なるほど、たしかにすごいHTML…
>813
スマソ
>814
そうでつか
0816nobodyさん04/09/30 16:01:47ID:???
>>811
お前向けのスレはここだ。

KENT WEB 総合スレ Part2
http://pc5.2ch.net/test/read.cgi/php/1078991985/
0817nobodyさん04/09/30 18:09:03ID:???
使い勝手とかで選ぶんならkentだっていいだろう
ただしソースは見るなよ
0818nobodyさん04/09/30 20:00:11ID:???
KENT陛下は厨にも見易いよう、わざと糞ソースをお書きになられておるのであります
0819nobodyさん04/09/30 20:00:36ID:???
おまいら、MattさんのGuestbook使えよw
久しぶりにyybbs見たけど相変わらずザルだね
スパゲッティー度上がってるし
0820nobodyさん04/09/30 22:21:44ID:ByT9cFMW
モジュールの中にある頭にアンダーバーがついてる関数っていうのは
そのモジュールの中でしか使わない関数っていうことでよかったですよね?
0821nobodyさん04/09/30 22:37:25ID:???
>>820
そういうローカルルールを採用する人もいる。
しかし Perl は君が他人の私物を拝借しても咎めない。
0822nobodyさん04/09/30 22:41:23ID:???
>>820
privateのつもりなのかprotectedレベルなのかは分かんないけどね。
0823nobodyさん04/09/30 22:59:24ID:???
finalかも(ry
まあ820-821の理解で十分じゃね。
もともと印程度のいいかげんなものだし、
なんやかんやで読んじゃったりするし。
0824nobodyさん04/09/30 23:29:58ID:???
>>821
他人の私物を拝借したら咎めるようにするモジュールもある
0825nobodyさん04/10/01 02:57:04ID:???
<input type="hidden" name="foo" value="bar#hoge">
というのをform要素内の最後尾につけて、IDに対してののアンカーにしたいんですが、

〜foo=bar#hoge
とならず、
〜foo=bar%23hoge
とバケてしまいます。
どう記述したらバケずにできますか?
0826nobodyさん04/10/01 03:14:42ID:???
何だかよくわからんがurlエンコードされてるだけかと
0827nobodyさん04/10/01 09:53:29ID:???
>>825
生成されたHTML側でJavaScript使って飛ばせば?
0828nobodyさん04/10/01 10:26:24ID:???
perlscriptでWEBブラウザからtracertやnetstat等、システムコマンドを使い、その結果を新しいウィンドウで表示したいのですが、
以下のようにしても結果が表示されません。表示する変数には実行結果の最後の行だけが入っている模様です。
他の方の質問と比べて低LVで申し訳ありませんが、お助けください_no

<html><head><title>TraceRoute</title></head>
<script language = "PerlScript">
sub button1_click{
$form = $window->document->form;
$host = $form->host->{'value'};
@traceroute = `tracert $host`;
$window->document->write("@traceroute");}
</script>
<body>
<h2>TraceRoute</h2><hr>
<form name="form"><table>
<tr><td>IPアドレス or ドメインネーム:</td>
<td><input type="text" name="host" size=50 value=""></td></tr>
</table><p>
<input type="button" name="button1" value=" 実行 " onclick="button1_click()">
</p></form></body></html>
0829nobodyさん04/10/01 11:09:56ID:???
>825
アンカーくっつけるためのもんじゃないから無理
0830nobodyさん04/10/01 11:49:58ID:???
>828
クライアントプログラミングはム板に逝ったほうがいい
0831nobodyさん04/10/01 11:57:33ID:???
>827
JS使わんと無理ですか?
083282804/10/01 12:14:58ID:???
>>830
お手数掛けました。あちらで聞いてみますね。
083382504/10/01 12:56:20ID:???
渡されるアドレス内の#をバケさせない方法はないんですかね。
0834nobodyさん04/10/01 13:35:55ID:???
>>833
それは化けているのではないし、Perl の問題でもないのでスレ違い。
http://www.asahi-net.or.jp/~sd5a-ucd/rec-html401j/interact/forms.html#h-17.13.4.1
http://e-words.jp/p/r-ascii.html
http://www.din.or.jp/~ohzaki/perl.htm#JP_Escape
http://pc5.2ch.net/test/read.cgi/php/1095633323/
0835nobodyさん04/10/01 13:46:06ID:???
質問です。テキストフィールドに選択したテキストファイルを読み込んで表示させようと思っており、
選択されたファイルがバイナリファイルであればエラーを返す処理をしようと思っています。
しかしながら、テキストファイルにもかかわらずバイナリファイルと判定されてしまい、
ファイルを展開できないことがあります。

 opendir (DIR, ".");             # カレントディレクトリ
 while ($filename = readdir (DIR)) {
  if (-d $filename) {            # ディレクトリ
   next;
  }
  if (-B $filename) {            # バイナリ
   next;
  }
  push (@files, $filename); # ファイルの一覧
 }

全てが半角英数字のテキストの場合は、テキストファイルであると正常に判定されるようです。
選択したファイル内に2バイト文字があると-Bでは正確に判定できないのでしょうか。
0836nobodyさん04/10/01 14:35:28ID:???
>>835
入ってるんだよ。バイナリコードが。ほら、そこにネ。
0837nobodyさん04/10/01 14:42:32ID:???
>>836
わかんねぇカスはすっこんでろよ(pgr

>>835
JPerlが使えるのならば、そちらだと確か正常に動いたと思う。
ファイルを展開するんなら、ファイルを読みこんだ後、
表示させる前にNULL文字のチェックをしてみるのはどうだろうか。
拡張子を制限するとか、対策は色々あると思うぞ
0838nobodyさん04/10/01 15:00:34ID:???
>>835
http://perldoc.com/perl5.8.4/pod/func/-X.html
シングルバイト文字圏の人が言う「plain text」は、マルチバイト文字は考慮
していない。use encodings 環境下とかでどうなってるかは知らないけど。
0839nobodyさん04/10/01 18:40:00ID:???
携帯の絵文字(100個以上)を画像のURLに置換したいんですが、まとめて置換できませんか?今は1個1個(s//<img src=\/img\/001.gif>)でやっています…
0840nobodyさん04/10/01 19:45:04ID:???
>>839
http://www5a.biglobe.ne.jp/~n_rieko/perl/4.htm
084182504/10/02 00:17:02ID:???
>>834
有難う御座います。
そっち行って聞いて見ます。
0842nobodyさん04/10/02 04:12:13ID:???
foreachの逆ってありますか?
配列を後ろから読む、というような。
0843nobodyさん04/10/02 04:15:39ID:???
>>842
ありません。
reverseで逆順に並べ替えれば済むし。
0844nobodyさん04/10/02 04:17:10ID:???
>>843
即答ありがとうございます。
reverseですね。それを使うことにします。
0845nobodyさん04/10/02 06:14:55ID:???
フォームの窓AからPOST > 窓Bに結果表示 > 窓Cを再読込

ということをしたいのですが…。出力したときにjavascriptを埋め込むとかでしょうか。うーん。
0846nobodyさん04/10/02 06:31:48ID:iwLkYg8H
Active PerlをWin2000のC:\PerlにインストールしましたがCGIが動きません。
CGIはInetpub/cgi-bin/に置いています。
Prelのバージョンは多分5.6だと思います。
Perlへのパスは#!/user/local/bin/perlにしてます。
どうすればよいでしょうか?
ちなみにPerlインストール後は設定を何もいじってません。
よろしくお願いします。
0847nobodyさん04/10/02 06:56:22ID:???
>>846
IISの設定は知らないがとりあえずPerlのパスは
#!C:/Perl/bin/perlだろ
#!/Perl/bin/perlでもいいかも
0848nobodyさん04/10/02 07:16:33ID:???
>>846
httpdは?
Perlだけ入れてもCGIとしては動かんよ。
0849nobodyさん04/10/02 08:03:38ID:iwLkYg8H
>>848
httpdってどこをどのように変更するのでしょうか?
よろしくお願いします。
085084904/10/02 08:45:47ID:iwLkYg8H
IISが入っているのですがhttpdが必要なのでしょうか?
0851nobodyさん04/10/02 08:55:46ID:xWycr4I2
「iis perl」でググれば普通に情報が見つかるもんだが。
ttp://www.din.or.jp/~bigstone/cgilab/cgitips/iis.html

関係ないけどミケネコさんてお亡くなりになったのね。超ショック。
ご冥福をお祈りします。
0852nobodyさん04/10/02 09:12:09ID:???
亡くなったのはミケネコ本人じゃなくてサーブル研究員らしい
0853nobodyさん04/10/02 09:15:32ID:???
そですか。あのサイトはいろいろお世話になったから復活してほしい。
関係ないのでsage
0854nobodyさん04/10/02 09:36:37ID:???
スレ違いスマソ。

>>852-853
全ての研究員の中の人をお一人でやっておられたという説もある。
コンテンツはまた公開されそうな気配。
http://pc5.2ch.net/test/read.cgi/hp/1092690398/121
085584904/10/02 09:55:27ID:iwLkYg8H
>>851
返信ありがとうございます。
早速サイトを見ます。
0856nobodyさん04/10/02 15:40:45ID:???
>>845-855
スレ違いは誘導して他でやれ
0857nobodyさん04/10/02 19:17:38ID:IDTr6xb8
Redhat9
apache2
/usr/bin/perl

↑の環境でperlを使ってるのですが、最近急に掲示板の表示速度が
激しく遅くなりました。
普通のhtmlは普通に表示される、servletも動いてますがそちらも普通。
perlの掲示板のみが激しく遅いのですが、原因追及の為にどこを
調べたらいいでしょうか?
0858nobodyさん04/10/02 19:33:14ID:???
>>857
アクセス数,データの量等が影響するので、原因を特定するには情報不足だけど。多分設計の問題。
ありがちなのが、ログ等のデータをすべてメモリ上(配列など)に取り込んでるタイプの掲示版。
プロファイルとってみるといいよ。とりあえず続きは他のスレでどうぞ。スレ違い
0859nobodyさん04/10/02 20:09:46ID:IDTr6xb8
>>858
レスどうもです。
どこのスレで聞いたらいいでしょうか?

cgiは以前は普通に動いてたんです。それからデータサイズも大して
変わってないので原因がよくわからないんです。
何もいじってないですし・・・
0860nobodyさん04/10/03 00:22:34ID:???
>>859
だからプロファイルとってみるといいって書いてくれてるだろ
0861nobodyさん04/10/03 00:44:45ID:???
>>860
それはわかってるんですけど、スレ違いってことなので
続きの質問はそっちでするべきなんでしょ?
0862nobodyさん04/10/03 00:49:57ID:???
#!/usr/bin/perl -dDProf
でプロファイルとって、dprofppで解析か。
perlつーのは至れり尽せりだな。
0863nobodyさん04/10/03 01:05:09ID:lnyRtEhY
とあるスクリプトにCMS.pmというのが入っていたのですが、
これって何の略で具体的にどういう役割なんですか?
0864nobodyさん04/10/03 01:30:02ID:???
>>863
スレ違い
0865nobodyさん04/10/03 03:22:11ID:???
>>863
Core Mettya Sugee
0866nobodyさん04/10/03 03:57:51ID:???
LWPを使って行単位でファイルを読み込むことができるでしょうか?
0867nobodyさん04/10/03 04:22:11ID:???
callback を使えば一定サイズ毎に区切って読み込むことはできるが
行単位にはならないだろうな

一旦普通に全部読み込んでから改行コードで分割しる
086886604/10/03 04:25:29ID:???
>867
ありがとうございました
0869nobodyさん04/10/03 07:12:49ID:???
PerlでPDF扱いたいんだけどいい方法ない?
0870nobodyさん04/10/03 11:40:15ID:???
>>869
PDF_lib
ライセンスには気をつけろ
0871nobodyさん04/10/03 12:04:16ID:???
>>869
fpdfもあるでよ
0872nobodyさん04/10/03 12:24:14ID:???
>>870-871
PDFをHTMLorTEXTに変換したいんですが
どちらが向いてますか?
0873nobodyさん04/10/03 13:09:12ID:???
>>872
レポートよろしく。
0874nobodyさん04/10/03 14:28:22ID:???
ほらな、スレ違いは相手にすんなって。
教わっても調べようとしない>>872みたいなバカしかいないんだから。
0875nobodyさん04/10/03 14:36:47ID:???
>>874
つまらないレスつけるぐらいなら誘導してくれ
0876nobodyさん04/10/03 14:53:33ID:???
>>862
#!/usr/bin/perl -d:DProf
だね
0877nobodyさん04/10/03 15:05:17ID:???
>>875
そんなのはスレ違いの回答をしてるバカにやらせろ
つーか、お前がやればいいだろ
0878nobodyさん04/10/03 15:28:59ID:???
>>877
文句ばっかり書いて暇そうなお前がやってくれてもいいじゃないか
俺は正しいスレがどこかわからん
0879nobodyさん04/10/03 15:41:21ID:???
http://search.cpan.org/search?query=pdf&mode=module
0880nobodyさん04/10/04 21:13:24ID:???
eval関数の意味がググってもいまいち分かりません。
〜or〜と同じですか?またJAVAのtry catchと同じですか?
0881nobodyさん04/10/04 21:28:29ID:???
えばるんだよ
0882nobodyさん04/10/04 23:06:02ID:YvzQlu9k
下のURLで取得したHTMLファイルを読み込んで
コードや名称、取引値、前日比等を変数に取り出すには
どうすれば出来ますか?

http://quote.yahoo.co.jp/q?s=9646+9654+9684+9752&d=v1&k=c3&h=on&z=m
0883nobodyさん04/10/04 23:23:47ID:???
>>882
おばさんをバイトに雇って、EXCELに入力させる。
0884nobodyさん04/10/05 00:58:46ID:???
>>882
正規表現を勉強しれちよ
0885nobodyさん04/10/05 04:28:40ID:???
>>882
まずお前に聞きたい。
URLを入力したら、HTMLを読み込むってことがお前にできるか?
0886nobodyさん04/10/05 04:55:02ID:???
>>885
いや、それは誰でもできるんじゃないか?
ライブラリや関数を使えば。

perlもphpのように、ローカルファイルとネット上のURLのファイルを
表面的にでもシームレスに扱えるようにしてほしい。

LWPとか使うこと自体がだるいんだよ・・・
0887nobodyさん04/10/05 05:20:22ID:???
>>886
あいつには無理だろ?
perlで
open IN,'http://2ch.net';とかしそうだし
0888nobodyさん04/10/05 07:28:09ID:9Q+F9VOE
http://xxx.jp/?mode=0001
にアクセスした時に0001の画像を。
0002にアクセスした時は0002の画像を表示させたい思って、

if($FORM{'mode'} eq "0001"){$img = "01.gif";}
elsif($FORM{'mode'} eq "0002"){$img = "02.gif";}
elsif($FORM{'mode'} eq "0003"){$img = "03.gif";}
else{$img = "04.gif";}

print "<img src=\"$img\">";

と書いたんですけど出来ませんでした…。
どの番号にアクセスしても
04.gif
の画像が出てしまいます。
どうやったら上手くいくでしょうか?
お願いしますm(__)m
0889nobodyさん04/10/05 07:44:38ID:/XKjVdNT
>>885

とりあえずは、ダウンロードツールとかブラウザでHTMLを取得して
ローカルファイルにしたものを処理対象にしようとおもってます

ソケットオープンしてGETすればできるんでしょうか?
0890nobodyさん04/10/05 07:54:11ID:???
chankedと聞いて何も思い浮かばないなら素直にLWP::UserAgent使え
0891nobodyさん04/10/05 08:53:01ID:???
open をオーバーライドしちゃいなさい。
0892nobodyさん04/10/05 09:51:59ID:???
>>888
データ受け取れてますか?

$ENV{'QUERY_STRING'};
0893nobodyさん04/10/05 10:32:30ID:???
>>892
データは受け取れてるはずだが
$FORM{'mode'}は空っぽだと思われる
089488804/10/05 11:21:13ID:9Q+F9VOE
確かにカラッポでした…
modeを使わないでそのまま$ENV{'QUERY_STRING'}と数字だけを使ってやった方が簡単でしたね。

ありがとうございましたm(__)m
0895nobodyさん04/10/05 12:05:45ID:???
XP proマシンにIISとActive Perl入れて動作検証してますが、
次のようなエラーになってしまいます。
'c:\inetpub\wwwroot\cgi-bin\apply.cgi' script produced no output

webサーバーでは正常に動いているのですが、IISでディレクトリの設定を
変える必要があるのでしょうか?
IIS開いてみたけどよく分かりませんでした。
どこを変えればよいでしょうか。
※テキストファイルを書き出すプログラムを書いています。

よろしくお願いします。
0896nobodyさん04/10/05 12:20:39ID:???
script produced no output でググればあるじゃん
0897nobodyさん04/10/05 13:37:28ID:???
ロジックに関する質問いいでしょうか。
例えばこのようなフォルダ構造がある場合、
index.cgiが全ディレクトリ内のファイルの一覧を取得する事は可能でしょうか。

[root]
├ index.cgi
├ [data]
│  ├ [data_bak]
│  │   └ log.log
│  ├ data.log
│  └ data2.log
├ [file]
│  ├ file.txt
│  └ file2.txt
└ [img]
    ├ img.gif
    └ img2.gif

index.cgiでreaddirで一覧を取得し、その中にディレクトリがあれば、その中の一覧も取得し、
さらにその中にディレクトリがあれば・・・といった形の構造にしたいのです。
0898nobodyさん04/10/05 13:42:52ID:???
>897
どうしたの?
0899nobodyさん04/10/05 13:43:53ID:???
>>897
「ディレクトリ+再帰+PHP」でググれ

あとはディレクトリのパーミッションに気をつけること
0900nobodyさん04/10/05 14:15:07ID:???
>>897
>可能でしょうか。
可能でしょう。
>・・・といった形の構造にしたいのです。
そういった構造で、可能でしょう。

プログラムとは、といった構造だと出来るのではないか、可能ではないか、
と考えて作り、動かしてみて、思った通りに行かなければ、
なぜそう行かないのかを探り、修正し、、、、
といった積み重ねで出来上がるものなのです。
0901nobodyさん04/10/05 14:31:18ID:???
>>900
0から聞かれるよりかは、可能か不可能かだけを聞いてやり方を各自で模索してくれる方がありがたいのだが・・・w
0902nobodyさん04/10/05 14:37:12ID:???
>>901
だから、実際書いて見てつまずいた所を
聞いてこなきゃ進まないわな。

可能ですか?…といった構造にしたいのです。
なら「可能です」で終わるよ。

たぶんこれ期待した答えじゃないよな。
といって具体的な質問でもないとすると、
そこまで考えてて、一から教えろって話?
0903nobodyさん04/10/05 14:43:17ID:???
質問方法なんて質問者次第だからどーでもよくねぇ?
0904nobodyさん04/10/05 14:50:30ID:???
>>1
0905nobodyさん04/10/05 14:54:11ID:???
みんなログ保存はタブで分けてる?それとも<>で分けてる
一番いいのってなんだろ
0906nobodyさん04/10/05 14:57:47ID:???
何のログだYO
その辺のヘボいBBSの名前欄とかにタブ文字入れるとログが壊れて面白いなw
0907nobodyさん04/10/05 15:01:03ID:???
>>906
掲示板とかの

タブというかログ分けのコードを消去してない奴なんているのか
0908nobodyさん04/10/05 15:04:51ID:???
俺は<>かな。理由は2chがそうだからってだけ。
0909nobodyさん04/10/05 15:09:13ID:???
俺はオブジェクトのまんまdump
091089704/10/05 15:56:46ID:???
成功しました。
サブルーチンの中でサブルーチンを呼んで、、、という方法だったのですね。
ヒントを下さった>>899氏、ありがとうございます。
レス数が900を超えています。1000を超えると表示できなくなるよ。