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

Perlコーディング初心者質問スレ Part 46

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/01/18(水) 02:17:46ID:???
Perlのコーディングで困ってる人のスレです。

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

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

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

過去ログやお勧めサイトは >>2-10
0281nobodyさん2006/01/28(土) 09:16:38ID:???
おまえ日本語読めてますか〜?
主語述語どころかさっきよりも日本語変になってんじゃんけ
0282nobodyさん2006/01/28(土) 09:23:48ID:ZADCbzDw
>>281さん
すいません
言葉ではうまくいえないので
スクリプトさらしたほうがいいかと思って…
0283nobodyさん2006/01/28(土) 09:25:17ID:???
こんな風に書いててこんなエラーが出てます
どこか間違えてますでしょうか?

ソース開始



エラー内容開始



って書くのが普通じゃないかなと
0284nobodyさん2006/01/28(土) 09:29:23ID:ZADCbzDw
>>283さん
フォローありがとうございます
エラーは
<a href="$url">$url</a>が正しく表示されない(31となる)
どんなURLでもすべて["31"]が返ってくる
です
一応動作はします
0285nobodyさん2006/01/28(土) 09:31:49ID:???
そりゃそうだ
=~ ne\.jp$/i は「文字列の最後が ne.jp で終わっていれば」って意味だから
日本の大概のプロバイダのメールアドレスは一致するだろう
0286nobodyさん2006/01/28(土) 13:28:07ID:Tyr9AIOh
でも
0287nobodyさん2006/01/28(土) 13:40:33ID:???
>>280
前も見たな、こんなの
> if($url = ~/ne\.jp$/i){
正規表現マッチは =~ であって = ~ は意味が違う
0288nobodyさん2006/01/28(土) 13:59:03ID:ZADCbzDw
>>287さん
ありがとうございます!
それが原因でしたm(_ _)m
でもこれって最後の文字が[ne.jp]だったらってことですよね?
文の途中に入ってても処理してくれるようにはできないんですか?
しつこいようですがお願いいたします
0289nobodyさん2006/01/28(土) 14:05:22ID:???
正規表現でググればわかるんじゃないかなー
0290nobodyさん2006/01/28(土) 17:23:41ID:ZADCbzDw
>>289さん
正規表現マッチかなり便利そうですね
まだPerlかじりかけでして、
初歩的な質問ばかりしてご迷惑かけたことお詫びします><
これ見てやってみようと思います
0291nobodyさん2006/01/28(土) 17:52:35ID:???
他サーバーにあるHTMLファイルを読み込みたいと思っています。
LWPやHTTP:Liteというモジュールを使う方法をがあるようですが
これらが一般的でしょうか?
プロバイダのサーバにはインストールされていないようなので
他にも方法があれば教えてください。
0292nobodyさん2006/01/28(土) 18:32:38ID:???
>>291
だうそして、例えば Lib というディレクトリにおいて、
use lib "./Lib";
とやれば普通に require したり use したりできるようになるはずだべ。
0293nobodyさん2006/01/28(土) 18:34:53ID:kB13KdYy
すいません。教えて下さい。
クッキーをセットするサブルーチンで、
print "Content-type: text/html; charset=Shift_JIS\n";
print "set-Cookie: $COOKIE_NAME=$value; expires=$date\n\n";
と出力していて、うまくセットされていたのですが、このサブルーチン
より先に別のサブルーチンを呼び出すよう変更した途端、クッキーがセ
ットされなくなりました。その先に呼び出すサブルーチンその中に
print "Content-type: text/html; charset=Shift_JIS\n";
があるためと思われますが、クッキーセットのサブルーチンの
print "Content-type: text/html; charset=Shift_JIS\n";
を削ってもうまくセットされません。どうしてでしょうか?
0294nobodyさん2006/01/28(土) 18:43:16ID:???
予想:ブラウザに set-Cookie: $COOKIE_NAME=$value; expires=$date が表示されてる
02952932006/01/28(土) 18:54:28ID:HCtuTUwq
>>294
はい。その通りです。どうしたら良いでしょうか?
0296nobodyさん2006/01/28(土) 19:01:01ID:???
>>292
できました!
てっきりインストールしないと使えないものかと思ってました。
レスありがとうございました。
0297nobodyさん2006/01/28(土) 19:08:44ID:???
>>295
>print "Content-type: text/html; charset=Shift_JIS\n";
お前、この文の意味わかってるか?
02982932006/01/28(土) 19:43:54ID:3C15B2MW
>>297
すいません。分かりません。教えて下さい。
0299nobodyさん2006/01/28(土) 19:46:18ID:???
>>293のIDが全て違うから、もうこの話は終わりにしよう
03002932006/01/28(土) 21:21:54ID:wIuX5Wpl
すいません。そういう体質なもので仕方がないのです。
どなたか引き続き教えて下さい。
0301nobodyさん2006/01/28(土) 21:24:40ID:???
ここはPerlのコーディングスレでCGIスレではないんだが。
0302nobodyさん2006/01/28(土) 21:25:11ID:???
>>300
オライリーの「CGIプログラミング」15分でいいから立ち読みしてこい。
0303nobodyさん2006/01/28(土) 22:56:49ID:???
perl で例えばファイルをコピーする場合に、
何%終了のようなメッセージをどうしたら出力できますか?
0304nobodyさん2006/01/28(土) 23:19:15ID:???
ActiveXとかFlashとか使わないと無理
0305nobodyさん2006/01/28(土) 23:23:24ID:???
いや、ファイルをコピーの状況にもよるだろ。
CGIスレじゃないし、ローカル上のやりとりだと仮定すればできる。
具体性に欠ける質問には答える気0だけどな。
0306nobodyさん2006/01/28(土) 23:25:39ID:???
>>303
stat関数でファイルサイズを求めておき、read,writeのループをしながら読んだ・書いたバイト
数を累積していき、時々%を計算してprintすれば良いんじゃない?
0307nobodyさん2006/01/29(日) 02:18:43ID:???
1レスポンスしか投げれないからなぁ。
Ajaxからめたら強引にできそうだけど。
0308nobodyさん2006/01/29(日) 02:24:18ID:???
俺だったら FTP 開けるなw
0309nobodyさん2006/01/29(日) 09:20:15ID:???
ネットワーク越しにコピーするとは誰も言ってないのに...
Ajaxとか... FTPとか...
キミ達の妄想力には呆れるばかりだよ。
0310nobodyさん2006/01/29(日) 10:29:17ID:???
友達がいないんだからしかたねーじゃん。
0311nobodyさん2006/01/29(日) 11:05:56ID:???
>>303がどちらとも取れる質問なんだから、
どう答えても問題なし。

明確な回答が欲しければ、明確な質問をすること。
03123092006/01/29(日) 11:15:29ID:???
俺が質問者だと思い込むキミの妄想力には呆れるばかりだよ。
0313nobodyさん2006/01/29(日) 11:18:07ID:???
>>312
あんた誰?
03143092006/01/29(日) 11:58:10ID:???
俺は309だよ。
0315nobodyさん2006/01/29(日) 12:05:03ID:???
じゃあどうでも良いな。
03163092006/01/29(日) 12:48:06ID:???
騙り本気でウザいんだけど
03173092006/01/29(日) 13:08:17ID:???
>>316
そうか? 俺はお前に騙られても別にウザくないぞ。
0318nobodyさん2006/01/29(日) 13:09:37ID:???
最初にあおったのは309だと思う
(゚∀゚)ノ
03193092006/01/29(日) 13:14:28ID:???
>>312
>>314
>>316
>>317
はいはいわろすわろす
03203092006/01/29(日) 13:18:43ID:???
>>318
煽ったのは俺だが、騙ったのは別の誰かだ。
煽ってないとは一回も発言してない。

まさかとは思うが「騙る」を「あおる」と読んでる?
0321nobodyさん2006/01/29(日) 13:20:01ID:???
ここはPerlという言語だけではなく日本語という言語の勉強も行うスレですね
0322nobodyさん2006/01/29(日) 13:42:07ID:???
煽るから騙られることにさえ気づけない>>309が居るスレはここですか?
0323nobodyさん2006/01/29(日) 14:40:08ID:???
まんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこ
まんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこ
まんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこ
まんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこ
まんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこ
まんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこ
まんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこ
まんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこ
まんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこ
まんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこ
まんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこ
まんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこ
0324nobodyさん2006/01/29(日) 16:53:38ID:???
while (<STDIN>) {
chomp;
last if $_;
}
で入力待ちしているときに、
カウンタダウンを表示させたいとすれば、どういった方法を取ればいいのでしょうか?
0325nobodyさん2006/01/29(日) 16:59:54ID:???
そもそも last if $_; なんかやると、何か受け取るだけでループを抜けるのでは?
0326nobodyさん2006/01/29(日) 17:00:47ID:???
仮に last if $_; が last if !$_; であったとして、
0 とだけ書いた行が出て来るとループ抜けるですね。
0327nobodyさんNGNG
カウントダウンて何
0328nobodyさん2006/01/29(日) 18:21:45ID:???
sleepで1秒ごとに文字を表示しながら、
キー入力を受け付けたいのです。
0329nobodyさん2006/01/29(日) 18:27:58ID:???
意味不明です。
具体的に描写してください
0330nobodyさん2006/01/29(日) 18:43:57ID:???
あ・・・ここWebProgだった。ム板じゃない。吊ってきますorz
0331nobodyさん2006/01/29(日) 19:00:16ID:???
>>293

どうみても、print "set-Cookie: $COOKIE_NAME=$value; expires=$date\n";
print "Content-type: text/html; charset=Shift_JIS\n\n"; です。
本当にありがとうございました;
03323092006/01/29(日) 20:25:54ID:rcECZvhl
ここは騙ることで報復したと思えるお子様が住み着いているスレでしたか。
ム板でバカにされてるのもうなずける。
0333nobodyさん2006/01/29(日) 20:30:23ID:???
332 309 New! 2006/01/29(日) 20:25:54 ID:rcECZvhl
ここは騙ることで報復したと思えるお子様が住み着いているスレでしたか。
ム板でバカにされてるのもうなずける。
0334ム板 Perl スレ住人2006/01/29(日) 21:02:27ID:???
>>309
お前もこっちくんな
0335nobodyさん2006/01/29(日) 21:24:18ID:???
>>328
ああそういう意味ね
適当にforkなりthreadなり使え
03363092006/01/29(日) 21:25:22ID:???
> ム板 Perl スレ住人
最底辺を自慢してどうしたいんだよ。
0337nobodyさん2006/01/29(日) 23:13:56ID:???
粘着うざいな
0338nobodyさん2006/01/29(日) 23:31:23ID:???
顔が真っ赤なお子様がいると聞いて飛んできました
0339nobodyさん2006/01/30(月) 01:58:26ID:???
>>335
ありがとうございます。一つ挑戦してみます。
0340nobodyさん2006/01/30(月) 02:45:37ID:???
>>338
底辺PGは見栄張るなよ。
0341nobodyさん2006/01/30(月) 13:40:11ID:???
質問カモン
0342nobodyさん2006/01/30(月) 14:41:41ID:???
いくら待っても質問してこないから逝く
0343nobodyさん2006/01/30(月) 22:51:00ID:???
>>263
$a や $b を使った場合に、
実際に不具合が起こるケースにはどういうケースがあるでしょうか?
「これこれこういうことが起こりうるから使っちゃダメ」
みたいな具体例があれば教えていただきたく。
0344nobodyさん2006/01/30(月) 23:20:27ID:???
>>343
ヒント与えられてるんだから、調べろよw
0345nobodyさん2006/01/31(火) 00:05:32ID:???
WWW::Mechanizeって、対象ページはEUCのページしか無理なんでしょうか?
サンプルを見る限り、どれもEUCで書かれたページしか対象になってないので・・。
ShiftJIS対応のサンプルとかあれば、参考になるのでありがたいんですけど・・。
Encode.pm使ってコード変換とかしたらなんとかなります?
0346nobodyさん2006/01/31(火) 00:23:07ID:???
>>345
意味分からん。
データを取得するのに文字コードなぞ関係あるか。
0347nobodyさん2006/01/31(火) 00:28:18ID:???
昔からこのスレってこんなレベルだっけ?

#!/usr/bin/perl

use strict;
use WWW::Mechanize;

my $mech = WWW::Mechanize->new( autocheck => 1 );

$mech->get( "http://www.excite.co.jp" );

print "Content-type: text/html\n\n";
print $mech->content;
exit;
0348nobodyさん2006/01/31(火) 01:15:51ID:???
print "Content-type: text/html; charset=Shift_JIS\n\n";
03493452006/01/31(火) 01:22:22ID:???
>>346
データを取得するだけなら、Mechanizeじゃなくても・・。
フォームに自動入力させたり、リンクたどったりするために使いたいんですけど・・。
そのときに文字コードが関連してうまくいかなかったりするのかなぁと思って
聞いてみたんですけど・・。

見当違いの発言してますか?・・・多分してるんだろうなぁ・・。
0350nobodyさん2006/01/31(火) 01:53:08ID:???
>>349
見当違いと言うか、試す前に質問するのが間違いだな。
>>1
> 1: 自分はこういう事がしたい。
> 2: それでこんな風にやってみたが・・・
> 3: こんなエラーが出て上手く行かなかった。
03513472006/01/31(火) 03:09:04ID:???
>>349
いや、何となく意図は分かったが、
質問力と実践力の無さを婉曲的に指摘してみた。

EncodeでもJcodeでも
自分なりに試して、それでどうしてもダメだったら聞けば?

質問文に書かれている以上のことを
「おそらくこういうことが言いたいんだな」と想定してあげて、
もし質問者の意図と違ってたら、
回答者の労力って本当に無駄だよね。
0352nobodyさん2006/01/31(火) 03:13:54ID:???
だが、そこまでやれる人は初心者質問スレに来なくとも自力で解決できるw
ある意味矛盾ってやつですなw
0353nobodyさん2006/01/31(火) 03:19:58ID:???
>>345の問いに対する答えとして
>>347は適切だと思うが。
0354nobodyさん2006/01/31(火) 03:26:28ID:???
>>353
Mechを挙げた時点で、シンプルにページのデータ取得だけを目的としたものではないと
検討がつくはず。データ取得ならLWP::Simpleでもできる。

>>345
Spidering Hacksって本の最後のほうに解決策があるよ。ググってみて。
0355nobodyさん2006/01/31(火) 04:29:56ID:???
>>354
だから、何でわざわざ推測してやらにゃって話だろ?
書かれた問いに対しての回答としてひとつも間違っちゃいない
0356nobodyさん2006/01/31(火) 12:17:22ID:h8hzbfFv
>>355の性格が露呈してるな。
どんな性格かは言わずもがなだが。
0357nobodyさん2006/01/31(火) 12:58:54ID:FkRWAlIz
perlで認証付きサイトを構築しようと考えています。
まずlogin画面があり、認証後サイトを見れるという感じなのですが
認証後のサイトURL直入力などを防止する為にはどのような対応が良いのでしょうか?
idとパスワードを画面遷移ごとにpostデータとして送るというのはなんか
パスワードがソース内に表記されているという事で嫌な感じがしますが
一般的なのでしょうか?
最近のセキュリティソフトではリファラを出さないそうなのでこれも使用しない
方向で考えています。
どなたかお知恵を拝借願います。
0358nobodyさん2006/01/31(火) 13:04:36ID:???
>>357
Perl特有の話ではないのでスレ違い
0359nobodyさん2006/01/31(火) 13:06:20ID:???
>>357
http://www.shtml.jp/htaccess/basic.html
以上。
0360nobodyさん2006/01/31(火) 13:17:20ID:???
常にリファラを厳重にチェック
クッキー使用(クッキーにはユーザー名もパスワード名も入れない。セッションIDのみ)
0361nobodyさん2006/01/31(火) 13:47:37ID:???
> 常にリファラを厳重にチェック

Apache の仕事じゃね?
0362nobodyさん2006/01/31(火) 14:57:21ID:???
特定のページからしか飛べないページがあった場合、それはApacheの仕事ですかそうですか
なるほどね
すっごいや
0363nobodyさん2006/01/31(火) 15:00:06ID:???
>>362
別に間違っちゃいないが。
リファラ吐かないのならhtaccessに頼ろうがcgiに頼ろうが変わらないし。
0364nobodyさん2006/01/31(火) 15:06:55ID:???
>363
投稿確認のページ(例:index.php?exec=setcheck)があった際に、リファラは投稿ページ(例:index.php?exec=posting)である必要があるよね?
投稿確認ページでチェックするリファラが空であったり、投稿ページ(例:index.php?exec=posting)以外であればそれを弾く。
チェックとはそゆことを言ってます。
リファラ吐かない鯖なんて前提にしてません。
0365nobodyさん2006/01/31(火) 15:08:22ID:???
ついでに
>最近のセキュリティソフトではリファラを出さないそうなのでこれも使用しない
との事なのでリファラ取得が前提とした質問かな
(今気が付いたんだけどねorz)
0366nobodyさん2006/01/31(火) 15:17:37ID:???
だな。仕様書読めと。
0367nobodyさん2006/01/31(火) 15:20:18ID:???
>>365
逆じゃない? リファラ取得できない場合があるからリファラで判定したくないって
読めるんだけど
0368nobodyさん2006/01/31(火) 15:20:19ID:???
> 投稿確認のページ(例:index.php?exec=setcheck)があった際に、リファラは投稿ページ(例:index.php?exec=posting)である必要があるよね?

スパゲッティ得意?
0369nobodyさん2006/01/31(火) 15:21:37ID:???
>>364
リファラ吐くのは鯖じゃないぞー
0370nobodyさん2006/01/31(火) 15:22:56ID:???
>>359のBasic認証はスルーですかそうですか。
IDとパスワードがどんな形で渡すのかわからんが
場合によったら一番手っ取り早いだろ。
0371nobodyさん2006/01/31(火) 15:23:58ID:???
basic って、ssl かまさないと見放題だよな。
0372nobodyさん2006/01/31(火) 15:28:12ID:???
痛々しい>>364-366がいるのはこのスレですか?
0373nobodyさん2006/01/31(火) 15:50:26ID:???
>>371
それを言ったらSSL通らない通信はみんな信頼性にかけるし。

357がどれだけの信頼性が必要なのかがわからんけど、
仲間内だけで運営するとか、登録した人だけサイトが見られるとか
そんな感じなのであれば、Basic認証やらDigest認証で十分でしょ。
0374nobodyさん2006/01/31(火) 16:10:38ID:???
>>372
スマン、自分が仕様書読めてなかった。今は反省している。
0375nobodyさん2006/01/31(火) 16:12:43ID:???
んでだ、質問者はこねぇのか?
0376nobodyさん2006/01/31(火) 18:09:43ID:???
Win環境でファイルを新しい順にソートしようとしてるのですがうまくいきません

いろいろサンプルを見ながら試してて気が付いたのですが
(stat($file))[9] としたときに更新日付が帰ってきてませんでした

stat 以外でファイルのタイムスタンプを取得する方法ってありますか?
0377nobodyさん2006/01/31(火) 18:41:59ID:???
どうしてそこで自分の stat() の使い方のほうを疑わずに stat() の方を疑うのか?
0378nobodyさん2006/01/31(火) 18:49:59ID:???
>>376
更新日付が取れない事を変だと感じるが。
http://www.kt.rim.or.jp/~kbk/perl-5.8/perlfaq5.html#how_do_i_get_a_file_s_timestamp_in_perl
http://perldoc.jp/docs/perl/5.6.1/perlfunc.pod#item__i__X__i__FILEHANDLE
http://perldoc.jp/docs/perl/5.6.1/perlfunc.pod#item_stat_FILEHANDLE

print
  map localtime($_->[1]) . " $_->[0]\n",
  sort { $b->[1] <=> $a->[1] }
  map [ $_, (stat)[9] ],
  glob './*'
;
0379nobodyさん2006/01/31(火) 19:18:30ID:???
んぁ〜ごめんなさい。明らかな自分のミスでした。
opendir(DIR, "./$datdir")
のようにしてファイル一覧を取得してからファイルのタイムスタンプを取得しようとしてたんですが、
stat("./$datdir/$file[$i]") のようにすべきなのにディレクトリを指定し忘れていただけでした。

回答をしていただいたのにくだらないミスで済みませんでした。
0380nobodyさん2006/01/31(火) 20:18:16ID:RrDOFj4a
掲示板CGIです。
Jcode.plを使って投稿時に含まれている半角カタカナは
全角カタカナに変換するようにしたのですが、
半角カタカナのみの投稿の場合動作しません。
これはなぜなんでしょうか?

該当部分のソース
 # S-JISコード変換
  &jcode'convert(*value,'sjis');
 #半角カタカナ変換
  &jcode'h2z_sjis(\$value);
これがフォームでコードの部分に入ってるだけ。
0381nobodyさん2006/01/31(火) 21:07:14ID:???
>>373 が必死な件について。
■ このスレッドは過去ログ倉庫に格納されています