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

【Perl 】初心者コーナーPart8

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。01/10/24 14:11ID:???
いらっしゃーい、perlのコーディングで困ってる人のスレです。

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

1と3が無いと誰も答えられないよ、良い回答は良い質問から。
一緒に勉強しましょう。

参考書籍はこちら【【Perl,CGI】参考書籍 第2版 】
http://ebi.2ch.net/test/read.cgi/php/988809842/l50
CGIの質問はこちら【CGIだけど、なんか質問ある?part4】
http://ebi.2ch.net/test/read.cgi/php/1000804655/l50

過去ログ、その他の役立ち情報は>>2-10を見よう。
0136名無しさん@お腹いっぱい。01/11/02 20:34ID:???
冷たいんだね
0137名無しさん@お腹いっぱい。01/11/02 20:37ID:???
プロトタイプって手もある
sub test(\%);

test(%jjj);

sub test(\%){
my $href = shift;
print $href->{aaa};
}
0138名無しさん@お腹いっぱい。01/11/02 20:41ID:ofsCZTnG
変数に例えば
$hoge ='aa,bbb,cc,ddd,nn,nn,yy,zzz';
のように格納されていた場合後ろから2つ目の「,」
の位置を調べたいのですがどうすれば良いのでしょうか?
お願いします。
0139名無しさん@お腹いっぱい。01/11/02 21:38ID:???
(length join ',,',(split /,/,reverse $test)[0,1])
0140名無しさん@お腹いっぱい。01/11/02 21:43ID:29kqQmn/
>139
レスありがとうございます。
早速使わせていただきます。
どうもでしたm(_ _)m
0141名無しさん@お腹いっぱい。01/11/02 21:46ID:???
rindexを2回使うという手も。
0142名無しさん@お腹いっぱい。01/11/02 21:49ID:29kqQmn/
>141
それはどういうものでしょうか?
POSを使うのですか?
014314101/11/02 22:01ID:/ySb/MGF
>142
文字を後ろ向きに検索して,見つかった位置を返す。
perldoc -f rindexあたりで説明見られると思う。
0144名無しさん@お腹いっぱい。01/11/02 22:03ID:29kqQmn/
試してみます。
親切にどうもありがとうございますです。
014513201/11/02 23:28ID:+bAAQDJN
>>134
>>137
ありがとうございます。勉強し直します。

&test( \%jjj ) ;こう書いてました。
根本的に勉強不足だったようです。
0146cgiビギナー01/11/03 01:03ID:???
掲示板を作っています。ベテランには痛い質問かもしれませんが
今ealisという掲示板で奮闘しています。
関連サイト→http://kano.vis.ne.jp/erial/
そこの設置開設のところでparlパスを書き込むのですが
最初の行に#!/usr/local/bin/perlと書き込めばよろしいのでしょうか?
まだ質問がありますがひとまずお願いいたします。
0147名無しさん@お腹いっぱい。01/11/03 01:16ID:???
>>146
何を言いたいのか全く解りません。
普通、CGIを設置する上で"Perlのパス"といった場合は
#!/usr/local/bin/perl
などの1行を指す場合は多いです。
この1行はサーバ上のPerlというプログラムの位置
(WinでいうならC:\Program Files\perl\perl.exeという感じ)
を表します。
そのため、サーバによってインストールされた場所も異なり、
サーバごとに記述するべき内容異なります。

そもそも、ここに書き込む前にしかるべきサイトで
CGIについて勉強してくるべきだと思われます。
0148名無しさん@お腹いっぱい。01/11/03 01:16ID:???
>146
KENT氏のページへ行かれたほうがよろしいかと思います。
http://www.kent-web.com/

氏のサイトは,初心者にも優しいと定評があります。
014914801/11/03 01:19ID:???
誤字
優しい->易しい
0150cgiビギナー01/11/03 01:18ID:???
>>147
ご忠告感謝いたします。>>148氏が書き込まれたサイトにて学んできます。
0151名無しさん@お腹いっぱい。01/11/03 02:42ID:cMX/dhh7
他のサイトからのアクセスを制限したいのですが、
(チャットのよそからの発言を禁止するような感じです。)
referer調べる以外で良い方法は無いものでしょうか?
0152名無しさん@お腹いっぱい。01/11/03 02:55ID:???
>>151
IDを発行するとか。
0153名無しさん@お腹いっぱい。 01/11/03 13:58ID:???
再帰の深さってどれ位まで許されてるんでしょうか?
処理系依存ですかね
スタック食い尽くす前にヲーニングくれたりしないかな・・・
0154名無しさん@お腹いっぱい。01/11/03 15:58ID:cu67OhWQ
$_
ってなんですか?
厨房でスイマセン…。
0155名無しさん@お腹いっぱい。01/11/03 16:04ID:???
@_ = ($_[0], $_[1], $_[2]);
0156名無しさん@お腹いっぱい。 01/11/03 16:14ID:???
ハァ(゜Д゜)?
0157cgiビギナー=14601/11/03 16:31ID:???
何とか掲示板が設置いたしましたがその掲示板で書き込みをしたとき
あとページエラーが出てしまいます。
原因は$INI{'locate'} = 'http://www.hogefoo.ne.jp/~bar/cgi-bin/ealis/';
という所で「eliasをインストールするDIRのhttpパスを書く」という単語の意味がわからず
間違っている書き込みをしていると思います。
お手数なのですが改善できる術は無いでしょうか?
関連サイト→http://kano.vis.ne.jp/erial/ealis/setup.html
そのealisを置いている場所は
ttp;//トップ/cgi-bin/test
のテスト言うディレクトリに入れてあります。よろしくお願いいたします。
0158名無しさん@お腹いっぱい。 01/11/03 16:53ID:???
eliasをインストールするDIRのhttpパスを書く
  ↓
eliasをインストールするディレクトリのアドレスを書く
  ↓
分からない単語は検索しろ
ディレクトリ、アドレス、パス、http://www.google.com/
0159cgiビギナー=14601/11/03 17:02ID:???
>>158
ありがとうございます。
0160名無しさん@お腹いっぱい。01/11/03 17:37ID:vwyWsLPj
$_ は省略時に暗黙の内に使われる変数。
たとえば、
while(<>) { print }
は
while($_ = <>) { print $_ }
と等価。
length の引数を省略したときは length $_ を返す、とかいろいろあるので、「プログラミングPerl改訂版」を読みましょう。
(perldoc でもよいが)
0161名無しさん@お腹いっぱい。01/11/03 18:59ID:???
$_を介すると、ほんのちょっとだけ処理が早くなる傾向がある(ようだ)。
常時、積極的に使用するほどメリットがあるとは思わないが、
何万回といったループの中で使うと結構でかい差になるかもしれない。
0162名無しさん@お腹いっぱい。01/11/03 19:12ID:???
>>157 初心者は使うなって書いてあるやん・・・
0163_gunzip@鬱だ詩嚢01/11/03 20:33ID:???
>>153
my()で確保しているpadlist内の変数の数/大きさにも依りますから
一概に何回、とは言いきれません。

ただ、-w オプションを付ける、ないしwarningsプラグマで
"recursion"カテゴリの警告を行うよう設定していれば、
サブルーチンの100回以上の再帰呼び出しがなされた時点で警告が出ます。
(中止するわけではないので、あまり意味はありませんが)

各CVは、おのおの自分自身の再帰呼び出し回数をxcv_depth
メンバに保持していますから、内部APIのCvDEPTHマクロを利用して、
規定回数以上になれば強制的にreturnさせるコードを挿入する
ぐらいしか対策がないような気がします。

I32 get_depth(SV *sv)
{
    if(SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVCV)
        return CvDEPTH(SvRV(sv));
    else
        return -1;
}
0164_gunzip@鬱だ詩嚢01/11/03 20:43ID:???
っていうか、数えた方が早いね。
0165名無しさん@お腹いっぱい。 01/11/03 23:48ID:???
>>159 cgiビギナー=146
ここは1に書いてあるように「perlのコーディングで困ってる人のスレ」
だから、こっちで聞く方が良いと思いますよ。

CGIだけど、なんか質問ある?part4
http://pc.2ch.net/test/read.cgi/php/1000804655/l50
0166名無しさん@お腹いっぱい。01/11/04 00:00ID:oP9d6xQM
>>151
手続きなど無しで制限したいのですがやはり無理でしょうか?
お願いします。
0167名無しさん@お腹いっぱい。01/11/04 00:06ID:???
>151 自鯖なら .htaccess。
0168名無しさん@お腹いっぱい。01/11/04 00:22ID:oP9d6xQM
>167
.haccessで制限できますか?
↑関連スレで質問した方が良いかな?
0169名無しさん@お腹いっぱい。01/11/04 01:34ID:???
>>168
167は.htaccessでユーザ認証しなさいってことじゃないすか。
いちおう.htaccessのRewriteRule/RewriteCondを使うと
リファラを見て外部からのアクセスを拒絶することはできるけど、
151でリファラ以外の方法って書いてあるしね。
0170名無しさん@お腹いっぱい。01/11/04 03:26ID:h2smYChV
バイナリコードを含む文字列を特定の長さに切りたいのですが
どうすれば良いでしょうか?

$str='a壱弐参四五'; # length:11
$str=~s/^(.{10}).*/$1/;

例えばこんな感じで長さを10にする事はできるのですが、
バイナリデータをぶった切ってしまってバイナリの片割れが出てきてしまいます。
切る所がバイナリデータだった場合は回避して、この場合は長さ9にしたいです。
バイナリデータの判別方がわかれば何とかできると思いますがわかりません。
どうすれば実現できるでしょうか?
0171cgiビギナー=14601/11/04 03:44ID:???
>>165
無事に掲示板を設置することが出来ました。
どうやらDIR=ディレクトリのことらしいでここら辺がわからなかったのですよ。
色々お手数をおかけしました。今度β版と言う難しいのに挑戦しようと思っているので
そちらの方に質問をさせていただくかもしれません。
とりあえず今はトホホのサイトにて勉強しながらやっていきます。
0172名無しさん@お腹いっぱい。01/11/04 04:04ID:cP9onYMm
>>170
いろいろあると思うが、おれはこうしてる。
(1)最初に10バイトで切る。
(2)先頭から「正しいバイナリ」が続く部分だけ残して、その後ろを削除。

たとえば「Shift_JISまたはASCII」を切り出す場合は、
$str = substr($str, 0, 10);
$str =~ s/^((?:[\x81-\x9F\xE0-\xEC][\x40-\x7E\x80-\xFC]|[\xA1-\xDF]|[\x20-\x7E])*).*/$1/;
0173名無しさん@お腹いっぱい。01/11/04 04:18ID:h2smYChV
>>172
正しいバイナリというのがそう言う感じで記述できるんですね。
扱おうとしてるのはSjisだし、なんなら文字コード変換もできるので、
そのまま使えそうです。
漠然とわかったので、自分の中でちょっと煮詰めてみます。
ありがとうございましたー。
0174名無しさん@お腹いっぱい。01/11/04 04:37ID:???
>>173
>正しいバイナリというのがそう言う感じで記述できるんですね。
いや「Shift_JISまたはASCII」というのは、
正規表現であらわせる素直なデータだからね。

「正しいバイナリ」の定義によっては、1バイトずつ切り出して
逐一判定しなければならない場合もたぶんあるでしょう。
いつでも正規表現が使えるとは思わないほうがいい。
017517301/11/04 14:35ID:???
>>174
メタキャラを含んだ文字列の正規表現でエラーというのは
既に実感を伴って経験済みです。

ともあれ、無事に実現できました。ありがとうございます。
しばらく様子を見てみて、エラーが生じたりするようならまた考えてみます。
0176153 01/11/04 17:36ID:???
_gunzipたんアリガトー(・∀・)&& お久しぶり
ちょっと聞き方がタコでしたね、perlマンセーな処理が有ったんですけど
家では問題無かったのに、会社のプアマシーンだとあぼーんしたんで
少し気になったんです、流石にそこまでは面倒見てくれないですか。。。
取り合えず50回位潜ったら、一旦全部抜けて、
続きからやり直し、って言う風にしてみましたです。
0177名無しさん@お腹いっぱい。01/11/04 17:57ID:vlyHsBRz
ちょっとお聞きしたいのですが
いま、ちょっとはまってしまっています。
状態は、500文字から1000文字くらいの文字列をいくつか作って
print文で表示させたいのですが、文字列を3個作って、3カ所print文を
文字列作成後に表示させようとすると、最後のprint文の途中まで表示して
そのまま待ち状態に、一回プログラム止めて今度は5個作って表示させると
さっき止まった3個目はきちんと表示されて、今度は5個目の途中で表示が
止まってしまいます。何回か実行させてみても同じところで表示が止まって
しまいます。どうも長い文字列のprint文(いくつかある時の)最後のprint
文で起こるようなのですが
出力先はブラウザです。print文の後には文字列を使う処理がありますが
そこまで進めません。print文で止まってしまって
どなたか同じような状態になったことある方いらっしゃられませんか?
どのようにしたら正常に表示できるのでしょうか?
わかりにくい説明ですみませんが、どうぞよろしくお願いします
0178名無しさん@お腹いっぱい。01/11/04 18:05ID:???
$| = 1;
0179ぽ01/11/04 18:49ID:iWvZka32
>>170
Jcode.pm に jfold ってのがあるよ
018017701/11/04 20:39ID:vlyHsBRz
もう一つお聞きしたいのですが
perlで、C言語とかでいうデバッガみたいなものは、ないのでしょうか?
上で書いたような状態でもう2,3日苦しんでいる状態で
できれば、1行ずつとかで、実行して原因がわかればと考えたのですが
わかる方、どうかご回答よろしくお願いします
0181名無しさん@お腹いっぱい。01/11/04 20:51ID:6q0Jo2MQ
当方,C言語のプログラマです.
ある特定の定義を一気にコメント化したりするのに,
sed等のコマンドを使って,シェルスクリプトを書いてました.
こんどperl を使ってこういう処理を使用と思ってるのですが,
あなたの使っているいいソースありませんか?(笑)
0182名無しさん@お腹いっぱい。01/11/04 21:59ID:RPCUxOjp
>>181
s2p とか a2p を使うと吉かと。
018317701/11/04 22:19ID:vlyHsBRz
書き忘れたのですが
いくつかのcgiを経由して、情報を集めて処理するcgiで現象が起きています
引き継いでいるデータがかなりあるので、困っています
一個のモジュールでのデバックはやったことあるのですが、
画面表示(html)->入力データ処理・検索・画面表示(cgi)->入力データ処理・画面表示(cgi)->
のような感じで、最終的に現象の起こっているcgiに行く頃にはかなりの情報があります
こういう場合コマンドラインでのデバックって可能なのでしょうか?
htmlもそのまま表示されてボタンとか押せないですよね
何かいい方法ありませんでしょうか?
よろしくお願いします
0184名無しさん@お腹いっぱい。01/11/04 22:46ID:PfX5esry
CGIほとんど書いたことないんで詳しいことは他の方に譲りますが
#っていうか間違ってるかも知れない
180>
perl -d script_name

183>
use CGI::Carp;
HTMLのコメント文としてデバッグ情報を出力
perl -d -MModule -e '1;' してmoduleをテスト
スクリプトそのものを少し書き換えてコマンドラインで動くようにする
とかいうのを思い付きます。
018517701/11/04 22:57ID:vlyHsBRz
>>184さん
ありがとうございます。
調べて試してみます
018615101/11/05 01:45ID:J/g4IyEG
>>169
やはりrefererを使ってはじくしか無いのですね。
レスありがとうございました。
0187名無しさん@お腹いっぱい。01/11/05 16:44ID:???
>>181
ある特定の定義って何よ?
そこんとこ、もう少し聞かせてくれない? C言語だよね?
0188名無しさん@お腹いっぱい。01/11/05 18:02ID:???
http://natto.2ch.net/test/read.cgi?bbs=off&key=1003929930
これ逝く人いないの?
0189名無しさん@お腹いっぱい。01/11/05 18:04ID:???
sub func() {
#...
}

sub func()
{
#...
}

みなさんはどっちが好みですか?
0190名無しさん@お腹いっぱい。01/11/05 18:41ID:5Lr/KNWp
>>189
前者。
0191名無しさん@お腹いっぱい。01/11/05 18:57ID:???
>>181
同じく、関数定義の事言ってるのか、だったら呼んでる所も
一緒に殺すって事? どうもperl万歳っぽい気はするが意味が解らん w
俺は関数改造した時とか一気に名前入れ替えるのに使ってる
0192名無しさん@お腹いっぱい。01/11/05 21:48ID:???
関数の処理の負荷に関するスレ立てるのってどう?
同じ処理でもこっちの方が良いとか。
あと前誰かだしてたけど、処理の負荷に関するページの紹介とか。
同じ変数使いまわすなら最初に変数の領域を確保しといた方が
良いとかそんなの。
0193名無しさん@お腹いっぱい。01/11/05 22:30ID:???
こっちではどうでしゃっろ
http://pc.2ch.net/test/read.cgi/php/991313362/
019419201/11/05 22:35ID:???
スレ立てるまでも無いですね。
というかスレ立ててもすぐ下がっちゃうか…。
どこかこんなページあれば教えて欲しいです。
0195名無しさん@お腹いっぱい。01/11/05 23:18ID:???
>>181
ちゅうかsedもCも知ってるならそん位1日で出来る様になるよ!
perldocの、「sedの洗練されたPGが〜〜」「Cに洗脳されたPGが〜〜」
辺り読めばバッチシ、正規表現なんかは後方互換性有るから結構そのまま使えるしね
その手のはビックリする位サクサク出来ちゃうぞっと♪
そしてダメな人間になって行くのじゃ  ふふふ
0196名無しさん@お腹いっぱい。01/11/06 03:08ID:???
>>195
そそ。で、Perlないと仕事する気にもならないと。(w
実際、Unix -> Winに移ってきて、シェルやコマンド群の貧弱さには
閉口したけど、Perlが使えるんで何とか工夫してやってる。
ただ、Winで真っ黒な背景のDOS窓開いて、パイプやリダイレクト組み合わせて
コマンド打ち込んでいると、確実に異端視される。
素人にはお勧めできない。(縛
0197名無しさん@お腹いっぱい。01/11/06 04:54ID:???
Macperlの初心者なのですが、もしご存じの方がいらっしゃいましたら
教えてください。webページのフォームからpostメソッドでファイルを
cgiにアップロードしようとしているのですが、32KB以上のデータって
macperlだと受けとれないんでしょうか。32KB以下のサイズのファイル
だとうまくいっているのですが・・・。
0198名無しさん@お腹いっぱい。01/11/06 16:49ID:???
>>197 サーバは何使ってるの?
少なくともMacperlにはそんな機能は無いしバグも上がっていない(筈)
0199名無しさん@お腹いっぱい。01/11/06 17:01ID:???
>197
cgi-lib.plを利用していますか?
>$cgi_lib'maxdata = *****; # maximum bytes to accept via POST - 2^17
この行を確認してみてください。
0200名無しさん@お腹いっぱい。01/11/06 17:11ID:TnuiR6XG
自分のいえの鯖にcgiファイル置いてみてみようと思ったんだけど
「Internal Server Error」が出ます。
パーミッションもあってると思うし原因が不明です。
Apacheでcgiの許可のあるディレクトリに置いてます。
test1.cgiって言うファイルです。

perlの場所も確かめました。
0201名無しさん@お腹いっぱい。01/11/06 17:19ID:???
>>200
それだけの情報でどうしろと?
0202名無しさん@お腹いっぱい。01/11/06 17:19ID:???
>>200
エラーログを見よう、-> $HOME/logs/error_log 辺りに有る
メッセージと適当にGoogleに放り込めばわらわら対策がヒットする
0203名無しさん@お腹いっぱい。01/11/06 17:25ID:???
2^17 って128kbじゃん・・・
020420001/11/06 17:38ID:TnuiR6XG
Premature end of script headers
改行コードの問題らしいです。

malformed header from script.
もう一個はこれです。
0205むぎ茶01/11/06 17:40ID:Zd0wUikG
改行コードを CRLFからLFに変換しよう
Meadowとか秀丸で変換しよう
Malformed はCGIが途中で終わったんでヘッダが変だよって httpd からのメッセージ
0206名無しさん@お腹いっぱい。 01/11/06 17:46ID:???
素で叩けば動いてんだろ?
だったら改行コードは関係ねーよ、
Premature end of script headers
これは適当なHTTPヘッダを吐く前にプログラムが終わったって事
`HTTP``ヘッダ``CGI``Content` 辺りで検索せい
020720001/11/06 17:56ID:TnuiR6XG
普通にマシン上で動かせばprintは表示され動いてくれます。
Contentが抜けてました。
0208名無しさん@お腹いっぱい。01/11/06 18:39ID:???
>>200
これ以上はCGIスレね。
ContentっつーかContent-Type。
0209名無しさん@お腹いっぱい。01/11/07 04:16ID:w4jQYe5D
package main; use vars qw[$var];
$var = 'MAIN';
print "$var\n";

package sub1; use vars qw[$var];
print "$var\n"; # (1)
$var = 'SUB1';

package sub2; use vars qw[$var];
print "$var\n"; # (2)
$var = 'SUB2';
__END__
(1)でMAINを(2)でSUB1を表示させたいのですが,$varがグローバルに使えません。
どうすればできますか?
Perl5.6ではなく,Perl5のやりかたでお願いします。
0210名無しさん@お腹いっぱい。01/11/07 04:21ID:???
$main::var
$sub1::var
0211名無しさん@お腹いっぱい。 01/11/07 06:18ID:???
突然Perlを使う事になって困っています、普段はCを使っています。
Perlの@はCの2次元配列のようなものと考えて良いんでしょうか?
例えば、、、
@ary = ('H','e','l','l','o');
printf ("%s",@ary);
だと H しか印字されないのです。。
それと、シングルクウォートとダブルクウォートの使い分けが
今一つ分からないのです。
0212名無しさん@お腹いっぱい。01/11/07 06:30ID:???
Perlには2次元配列は無し。
リファレンスを使えばそれらしきことも可能。

print @ary;

Single -> 変数展開無し
Double -> 変数展開有り
my $str = 'hoge';
print "$str";
print '$str';
0213名無しさん@お腹いっぱい。01/11/07 07:50ID:???
2次元配列有るよ、詳しくはPerlLOL辺りで

取り合えずCは忘れれ (・∀・) その書き方見てると辛そうだけど・・
全部の型と**文字列**が、int型に収まるとでも思ってくれ、atoiとか忘れれ
そう言う意味で前半の考えはイイ感じ
で、コンテキストで@aryの評価がコロコロ変わるんだけど、それは解るしかない
配列@aryの要素は@ary[0]じゃ無くて$ary[0]、慣れれ
クオートは、取り合えず全部 " にしる、2バイト文字使わなきゃこれで良い
printf ("今%s時です\n",$time); これは全然OK!
021421201/11/07 09:47ID:???
>>213
それは配列リファレンス使って、でしょ。
正確な意味では無いって解釈じゃいかんかな。
上2行はそんな感じだったんだが。

いや、別にどうでもいいんだが。
0215名無しさん@お腹いっぱい。01/11/07 14:16ID:???
>>209
package main;
use vars qw[$var];
*sub1::var = \$var;
*sub2::var = \$var;
以下209と同じ
0216名無しさん@お腹いっぱい。01/11/07 16:11ID:HKXTSnRB
みなさんファイルの有無ってどうやって調べてます?
0217名無しさん@お腹いっぱい。01/11/07 16:15ID:???
-e
0218216>21701/11/07 16:19ID:HKXTSnRB
すんまそん。
0219名無しさん@お腹いっぱい。01/11/07 19:11ID:???
たしかMacPerlってAppleEventの古い32KB制限の因習を引きずってて、
cgiとしてPOSTデータを受け取るときにもその制限があるんじゃなかったっけか?
MacPerlでcgiとして保存したスクリプトを呼び出すと、AppleEventで
MacPerl本体にデータが受け渡されてると思うので、32KB以上のデータは
あつかえないのかも・・・。AppleEvent自体はとっくにこの制限なくなってる
はずなんだけどね。解決策知ってる人いる?
0220名無しさん@お腹いっぱい。01/11/07 20:02ID:???
PerlFactoryってどうですか?
0221名無しさん@お腹いっぱい。01/11/07 20:27ID:???
高杉、つーか使おうと思ってたらライセンス切れた w
タブブラウザみたいなもんじゃ無いの、秀丸多窓、デバッグ用plで
やってるのと変わらん。
ステップ実行直接出来るのは便利かな
0222始めて数日。。。分不相応かなー01/11/07 21:00ID:EjFu+goO
Netモジュールかなんかを使って他のウェブページをゲットし、
perlで処理(文字列置換とか)したいと思っています。

変数名=Net::関数名(URL)

みたいな書き方をすれば、ページを1枚まるごとゲットして変数に格納できるような気はするのですが、
具体的にどう書いたらよいかわかりません。
どうしたらよいでしょう??
0223 01/11/07 21:18ID:NBKJ0dYI
LWPモジュールを使いましょう
0224名無しさん@お腹いっぱい。01/11/07 21:57ID:???
use LWP::Simple;
getprint(URI);
print get(URI);
022520901/11/07 23:30ID:???
>>210 >>215
グロブってこういう時に使うんですね。
ありがとう,勉強になりました。
0226198 だけど01/11/08 02:50ID:???
思いっきりアホだった。
俺はActive perlのつもりでMacperlって書いてた。 今見てビックリした(死
何ていうか、197の書き込み見た瞬間 Macperl -> Active perlに脳内置換しちゃってたみたい
適当な事言ってゴメソ
0227初心者01/11/08 16:17ID:???
すいません。教えて下さい。
@file_list = ($file1,$file2,$file3,$file4,$file5,$file6,$file7,$file8,$file9,$file10);
$name_length = @file_list;
ってあるんですけど、このままだと$name_lengthは10にしかなりません。
$file1〜10が、あるぶんだけの結果が欲しいんですけど、どうすればいい
でしょうか。
0228名無しさん@お腹いっぱい。01/11/08 16:24ID:???
あるぶん、って言うのは何?
$file1に入ってる文字列の長さか
$name_length = length $file1;
0229名無し~3.EXE01/11/08 17:38ID:OCo2EZxt
211 です、亀レスですが、212さん213さんありがとう御座います。
アレから3日ほど触ってなかったから、又C頭に戻ってしまいました・・・(^ ^;
頑張ります。
0230名無しさん@お腹いっぱい。01/11/08 17:44ID:???
>>227
仮に「存在するファイルだけ」ということならファイルテスト演算子使え。
-e $file
0231初心者01/11/08 18:26ID:07jIFch6
返事おくれてすいません。
例えば、もし$file1の変数に値があれば1を返し、なければ0を
返して、1を合計すれば$file$1〜10で、値が入っているものの
数をカウントできる、とおもうのですが、いかがでしょうか。
0232初心者01/11/08 18:28ID:???
$file$1〜10→$file1〜10でした。すいません。
0233名無しさん@お腹いっぱい。01/11/08 18:37ID:yS1X4SA3
>>232
これで、あってる?
my @vars = (1,undef,3 ,5, 0);
my $count = 0;
foreach(@vars){ defined $_ and $count++ }
print $count;
0234初心者01/11/08 19:36ID:07jIFch6
>>233
さすがです!!ばっちりうまくいきました!!
天才!!ありがとうございます!!
0235名無しさん@お腹いっぱい。01/11/08 20:50ID:???
my @vars = (1,undef,3 ,5, 0);
my $count = grep{ defined $_ } @vars;
print $count;

ま、大差ないが。
0236名無しさん@お腹いっぱい。01/11/10 17:29ID:a3KNiGz4
メールなんかのヘッダーフィールドについてくる、Date: のフィールドの時刻表示には、
かなりバリエーションがあるのですが、あれを意味のある数値(例えばperlのtime関数が返す値)
に変換するにはどうするのが定石なんでしょうか?

おそらく決まりきったやり方があるんだと思うんですが。。。
■ このスレッドは過去ログ倉庫に格納されています