【Perl 】初心者コーナーPart6
■ このスレッドは過去ログ倉庫に格納されています
0001undefさん
2001/07/26(木) 00:40ID:???尋ねる前に同じ質問がないかこのスレや旧スレ、及び>>2のリンクを一通り見てみよう。
案外答えはもう書かれているかもしれない。
0248名無しさん@お腹いっぱい。
2001/08/08(水) 15:25ID:???コーディングミスをuse strictの所為にする厨房が。
0249名無しさん@お腹いっぱい。
2001/08/08(水) 15:27ID:???動きますが?
0250名無しさん@お腹いっぱい。
2001/08/08(水) 15:30ID:???ちなみにテキストの内容に $ とか @ とかは入って無いです。
んー…
0251名無しさん@お腹いっぱい。
2001/08/08(水) 15:35ID:???0252名無しさん@お腹いっぱい。
2001/08/08(水) 15:41ID:???というかローカルでは動くんですが…
0253名無しさん@お腹いっぱい。
2001/08/08(水) 15:41ID:???多分これからもエラー出まくるから出来ればコマンドラインでwcした方が
良いよ。cgiでやるならKcache入れるとか。
探せばごろごろ出てくる。
0254名無しさん@お腹いっぱい。
2001/08/08(水) 15:53ID:???サーバで実験すんな。ローカルでやれや。
0255名無しさん@お腹いっぱい。
2001/08/08(水) 15:55ID:???2chには無理。
0256名無しさん@お腹いっぱい。
2001/08/08(水) 16:06ID:???jcode.plはライブラリだ。
0257名無しさん@お腹いっぱい。
2001/08/08(水) 16:07ID:???ローカルでは動いてると書いてるようだが。
0258名無しさん@お腹いっぱい。
2001/08/08(水) 16:09ID:???shebang行が違うというのは無しの方向で。
0259名無しさん@お腹いっぱい。
2001/08/08(水) 16:14ID:???ウチもニフだが合ってる。
ってかマジで動かないねぇ。
サーバのせいにして終わりにしておけ。
0260名無しさん@お腹いっぱい。
2001/08/08(水) 16:15ID:???0261名無しさん@お腹いっぱい。
2001/08/08(水) 16:18ID:???strict.pmが無いならアウト。
0262名無しさん@お腹いっぱい。
2001/08/08(水) 16:26ID:???かな?
0263名無しさん@お腹いっぱい。
2001/08/08(水) 16:28ID:???perlのバージョンは5です。 (ただし、perl5での標準的なモジュールは使用できません)
ということで、strict.pmすら無いというオチかと。
0264名無しさん@お腹いっぱい。
2001/08/08(水) 16:43ID:???いいな ベシャリ出来るって いや ある意味不幸か ヽ(´ー`)ノ
0265264
2001/08/08(水) 16:45ID:???許して 30時間寝てないの。。。。。。
0266名無しさん@お腹いっぱい。
2001/08/08(水) 16:50ID:???今一番勢いの良いスレに書こうとしたと見たが(w
0267名無しさん@お腹いっぱい。
2001/08/08(水) 17:00ID:???分かりました、みなさんレスどうもでした。
0268名無しさん@お腹いっぱい。
2001/08/08(水) 17:29ID:???0269名無しさん@お腹いっぱい。
2001/08/08(水) 20:23ID:???0270名無しさん@お腹いっぱい。
2001/08/08(水) 20:37ID:???0271名無しさん@お腹いっぱい
2001/08/08(水) 21:22ID:???xxx.datの中身が
127.0.0.1
127.0.0.1
127.0.0.1
127.0.0.1
だとしたら、これを消したいんです。
0272名無しさん@お腹いっぱい。
2001/08/08(水) 21:24ID:???close FILE;
もっとスマートな方法ありそうだけど。
0273272
2001/08/08(水) 21:26ID:???0274271
2001/08/08(水) 21:32ID:???その線で、datに何かを書き込む形で消すことはできませんか?
0275271
2001/08/08(水) 21:35ID:???while( <FILE> ){ push ( @IP , $_ )};
#ここでなにかやって
print FILE @IP;
close FILE;
って感じに。
0276名無しさん@お腹いっぱい。
2001/08/08(水) 21:35ID:???とほほとか見ると結構わかるよ
0277名無しさん@お腹いっぱい。
2001/08/08(水) 21:37ID:???0278271
2001/08/08(水) 21:48ID:???で、途中で@IPをどうにかしてから書き込みして消したいんです。
0279名無しさん@お腹いっぱい。
2001/08/08(水) 21:53ID:???open( FILE , "+<xxx.dat" );
while( <FILE> ){ if($_ ne "127.0.0.1\n";){push ( @IP , $_ )}};
print FILE @IP;
close FILE;
こんな感じ?
0280271
2001/08/08(水) 21:54ID:???foreach $IP (@IP){ $IP = ();}
ってやっても消えないんですよね…。
foreach $IP (@IP){ $IP = "\n";}
も4行だけもとIPが改行されるだけで消えるわけじゃないし。
0281名無しさん@お腹いっぱい。
2001/08/08(水) 21:55ID:???>>271の状態から何をどういう状態に持っていきたいのか
具体的に書いてみ。
0282271
2001/08/08(水) 22:04ID:???すみません。
xxx.datに他人のいろいろなIPを「1日だけ」保存しておきたいんです。
これは1日に1度しかCGIを利用できないようにするためです。
で翌日、保存しておいたIPを全て除去したいんです。
0283271
2001/08/08(水) 22:09ID:???( $sec , $min , $hour , $day , $mon , $year ) = localtime( time );
open( FILE , "+<xxx.dat" );
while( <FILE> ){ if($_ ne "127.0.0.1\n";){push ( @IP , $_ )}};
#$IP[0]に日付が書いてある。
#$dayと同じ日ならIPを後ろに追加して、
#$dayと違う日ならxxx.datの中身は$IP[0]=$day;だけにしたい。
print FILE @IP;
close FILE;
0284名無しさん@お腹いっぱい。
2001/08/08(水) 22:09ID:???ファイルごと消したいなら、
unlink('xxx.dat');
だし。
>>274はどういうことよ?
0285名無しさん@お腹いっぱい。
2001/08/08(水) 22:09ID:???一日一度(23:59と0:00はOK)か、24時間おきかにもよらない?
細かいことだけど。
0286285
2001/08/08(水) 22:11ID:???一つの手段として、xxx.datを${day}.datにしてしまう手もある。
そして、古いログを自動削除するように書き加える。
0287271
2001/08/08(水) 22:15ID:???そういう手もあるんですか。
open FILE, ">xxxx.dat";
↑これはdatの中身をいったん消去するんですか?
0288名無しさん@お腹いっぱい。
2001/08/08(水) 22:18ID:???一旦消去するよ。
てかそれくらいは試せばわかるだろ。
0289284
2001/08/08(水) 22:22ID:???なるほど。
$IP = 新しいIPアドレス
として、
open( FILE , "+<xxx.dat" );
$oldday = <FILE>
if ($day eq $oldday) {
seek(FILE, 0, 2);
print "$IP\n";
} else {
seek(FILE, 0, 0);
trucate(FILE, 0);
print "$DATE\n";
}
close FILE;
じゃだめ?
0290271
2001/08/08(水) 22:40ID:???おかげで無事難問を突破できました。もうどっちの方法でログを消そうか迷ってます。
truncateがスマートで美しいだけど、${day}.datもファイル生成あたりが上級者っぽいし。
#これでまたKENT氏に1歩近づいた…。
0291三下
2001/08/08(水) 23:32ID:???変数を$_このていどに省略する理由ってのは
見た目だけですかい!?
0292名無しさん@お腹いっぱい。
2001/08/08(水) 23:51ID:???use strict くらいの効果なら,直接コードに書いてしまったら?
strict.pm を見れば一目瞭然だけど一応.
BEGIN { $| = 0x00000002|0x00000200|0x00000400 } # 左からrefs,subs,vars
%INC を見ればそのスクリプトがどのファイルを使っているか分かるから,
これを使って,Nifty 用スクリプト(モジュールを全て展開する)を生成する
トランスレータを作るという手もあるかも.
0293名無しさん@お腹いっぱい。
2001/08/08(水) 23:54ID:???0294名無しさん@お腹いっぱい。
2001/08/09(木) 00:03ID:???$|じゃなくて$^Hな
わざわざ展開トランスレータを書くくらいなら
アプしたほうがいろんな意味でいいと思うがね。
0295名無しさん@お腹いっぱい。
2001/08/09(木) 00:03ID:???その行を削ってアップすりゃいいじゃん。
0296名無しさん@お腹いっぱい。
2001/08/09(木) 02:08ID:1PgCYU2Aサーバー上で動かない理由って何がありますかね?
Winで作っててサーバーはUNIXです。スクリプトはEUCで保存して、改行はLFにしました。
別のファイルをrequireしてますが、それはSJISです。
どうか教えてください。
0297名無しさん@お腹いっぱい。
2001/08/09(木) 02:12ID:???1:user/bin/perlの違い
2:絶対パスと相対パスの違い
3:Perlのバージョンの違い
4:使用できるモジュールの違い
5:パーミッションの違い
続きよろ。>>298
0298名無しさん@お腹いっぱい。
2001/08/09(木) 02:21ID:1PgCYU2Aレスありがとうございます。
言われた点をチェックしてみます。
また後できます。
0299名無しさん@お腹いっぱい。
2001/08/09(木) 02:31ID:???ウチもニフティなんですが、
モジュールを使うときはインストールしなければならないと聞いたことがあります。
インストールには特別な作業が必要なんでしょうか。
それとも、ただアップして requier か何かで呼び出せば良いんでしょうか。
0300名無しさん@お腹いっぱい。
2001/08/09(木) 02:44ID:1PgCYU2A言われた点をチェックしてみました。
1: Perlのパスはあってます。
2: それはrequireするファイルのパスの事でしょうか?もともと相対パスで書いてあり、合っています。
3: Perlのバージョンは5です。特に問題ないはずです。
4: モジュールは使用していません。
5: パーミッションは755です。これで他のスクリプトは動いています。
この状態で考えられるほかの原因の心当たりがありましたら教えてください。
よろしくお願いします。お手数かけます。
0301名無しさん@お腹いっぱい。
2001/08/09(木) 02:45ID:???みたいな事は無いかな?
0302名無しさん@お腹いっぱい。
2001/08/09(木) 02:47ID:???この回答かなり困るやね。
0303名無しさん@お腹いっぱい。
2001/08/09(木) 02:50ID:???どうもバージョン関係がぁゃιぃな
0304名無しさん@お腹いっぱい。
2001/08/09(木) 02:53ID:???私はこれでモジュールの設計変更を余儀なくされた。
0305名無しさん@お腹いっぱい。
2001/08/09(木) 02:57ID:1PgCYU2Aいやね、鯖の解説ページにそれだけしか書いてないんですよ。
僕も見た瞬間「げ!」と思ったんですが…。
ちなみに今まで10個くらいスクリプト書いてこの鯖で動かしましたが他のは大丈夫です。
それらの中では今回のスクリプトはかなり単純な方なのに…。
ちなみにただのフォームメールです。っていうかまだsendmailには送ってなくて、
フォームからの入力内容を画面に表示させてるだけです。
あ、レスくれた方ありがとうございました。
と言っても引き続きお願いします。
バージョン以外でなんかないですかね。
0306304
2001/08/09(木) 03:00ID:???スマソ。
>>305
バージョン見たいなら、
$command = `perl -v`;
print $command;
みたいな感じで見れませんか?
0307名無しさん@お腹いっぱい。
2001/08/09(木) 03:06ID:1PgCYU2Aありがとうございます。やってみます。
0308307
2001/08/09(木) 03:11ID:1PgCYU2Aむむ。なんかその方法だとうまくいかないッス。
ちなみにtelnetはつかえません。
Perlの5と5.6ってどの辺が違うんでしょうか?
正規表現の拡張くらいしか知らないんです。
0309名無しさん@お腹いっぱい。
2001/08/09(木) 03:13ID:bI3E6lI.http://search.cpan.org/doc/CHIPS/perl5.004_05/lib/base.pm
これを見るとPerl 5.004_04 では存在していたっぽいけど?
たとえbase が使えないからって、@ISAに入れればすむような気がするけど、
設計変更を余儀なくされるってどういうモジュール?
0310名無しさん@お腹いっぱい。
2001/08/09(木) 03:19ID:bI3E6lI.$] にperlのバージョン入ってるよ。
5.005と5.6の違いはいっぱいあるのでここ。
http://www.perldoc.com/perl5.6/pod/perldelta.html
0312名無しさん@お腹いっぱい。
2001/08/09(木) 03:26ID:???とはいえXSを使ってるわけじゃないから設計変更するまでのことはないと思うが…。
0313304
2001/08/09(木) 03:44ID:???0314307
2001/08/09(木) 03:53ID:KTDhsApQありがとうございます。バージョン分りました。
5.00503…。あやしい…。
教えていただいたサイト行ってみましたが
今はちょっと時間がないのでこんなに読んでいられないです。
今度じっくり読みます。
とういうわけでできればバージョン5と5.6の違いで注意すべき点などありましたら
教えていただけると助かります。ほんと教えて君ですいません。
0315307
2001/08/09(木) 04:11ID:???いろいろ調べてみて、全部コメントアウトして、
print "ok";
だけにしてもエラーがでたのでちょっ根本的に違うだろ。
と思ってその前で呼んでるrequireを疑ってみました。
で、その呼んでるファイルの中でダブルクォートの内側に
@マークをそのまま書いていたのがいけなかったようです。
\@にしたら動きました!
ホント皆さんありがとうございました。
勉強になりました。
0316名無しさん@お腹いっぱい。
2001/08/09(木) 11:47ID:???, -―- 、
, l[》《]| ヽ
/ i/ i ノノノ ))))〉
. / i i |(リ ( | | | ! / ̄ ̄ ̄ ̄ ̄
〈ヘ|_|l| l ゝ~ lフ/| < 質問に答えてくれるみなさん ありがとう
/ | | |( ヽwliヽ | \_____
/ /! | l ヘ《~ヘii~▲▲
/ /ノノ! ノ|リ〉 \/( ゚ω゚)
/ , ./-‐- 、/V\ハ_ヲUU
!/ ./ / / | ゝ つつ
ヽ_/ ./ ! jj \
/ i
〈 / | |'
ゝ / l | !/
`〜‐-L__」〜'^
0317名無しさん
2001/08/09(木) 12:16ID:???0318名無しさん@お腹いっぱい。
2001/08/09(木) 12:26ID:???gmtimeはグリニッジ天文台(跡地)の時刻を返す
localtimeはそのサーバーで設定されているタイムエリアの時刻を返す
0320名無しさん@お腹いっぱい。
2001/08/09(木) 18:00ID:4s0a7Yec以下の通りにしたいのですが、
↓の部分にxhtmlをはさんで表示させることってできますか?
例えば<link />なんかが入ると、500エラーになってしまいました。
print <<"__HTML_START__";
Content-Type: text/html
【ここ】
__HTML_START__
0321名無しさん@お腹いっぱい。
2001/08/09(木) 18:08ID:???xhtmlだろうがxmlだろうが関係ない。入れられる。
なにか他の原因があるはず。
最低限エラーが出るスクリプトを出してみ。
0322名無しさん@お腹いっぱい。
2001/08/09(木) 18:17ID:???最低限に絞っていくと分かりました!
<head></head>の中の、
<link rev="made" href="mailto:[email protected]" />
これを無くすと、500にならなくなりました。
しかし、これの何が原因なのか・・・
# 他の<link />は大丈夫でした。
0323名無しさん@お腹いっぱい。
2001/08/09(木) 18:19ID:???とかって書いてるんでしょ。
<link rel="made"href="hoge\@hoge.jp" />
にしてみ。
あと、関係ないけど __HTML_START__ よりも __HTML_END__ の方がいいと思う。
0324323
2001/08/09(木) 18:20ID:???@ が悪さしてるから \@ にしてね。
0325名無しさん@お腹いっぱい。
2001/08/09(木) 18:25ID:???@が原因でしたか。直してみます。
ありがとうございました<(_ _)>
0326微笑
2001/08/09(木) 19:08ID:???〃 _`__
,,-=-、、l{,_'´..._ `ヽ、、
〃. ',.´二W´- ‐-`\ \ヽ、___
_{l,'.'´ 、 ヽ ヽ ヽ彡k、ヽ\
.//`/ i l. \ 、ヽ `、 i彡}ヽ`' ´ ▲女優,アイドル、脱がしました▲
. /| / i { |l {\ {ヽ、_!..ヽ」_/} .}./ |__〉、
\l.{. l.ヾ _.ゝ_土. ゝ -'fT;;ヽ,| lテ}| ||__〉
/iヽゝヽ/{~);;:l {:..''ノ'ノノ|{ノ |_!!女優,女子高生のエッチ画像ばかりを厳選収集!スクール水着,女優,画像ばかり。
.|_|l」ヽ. ヽ ゞ‐' 、  ̄`ノレヽソ|
(.ソ.ゝ -- /' {=}ノ ◆アイドル画像秘宝館◆
(=| l へ、 /ノノ((.)). http://www.futomomo.com/netidol/idolhappy/maki/
((!)ヾヽヽ` ;.- ' ´ |'' ''"'´◆アイドラー◆
`~^``/'l ゜>\_ http://www.futomomo.com/netidol/idoler/megu/
, -‐〃"´ |___/ >- 、 ◆セーラー服◆
/ ./〃 |=/ 〃/ \ http://www.futomomo.com/netidol/sailor/miku/
/ | ||, ‐-、_,...!、/_ ,..、 .〃/ ヽ ◆人妻◆
〈 / -ー.{ { {.= ヽ、|| l | http://www.futomomo.com/netidol/waif/mai/
| ヽ /| |\ / i 〉 | ◆スイート倶楽部◆
〈 ∧ l_/./ | | \ _/ / / http://www.futomomo.com/netidol/sweetclub/miyuki/
desghgyj
0327名無しさん@お腹いっぱい。
2001/08/09(木) 19:27ID:???もう終わってる話だけど。
here docは、識別子の引用型によって中の文字列型が決まるよ。
例えば今回だったら、
<<"__HTML_START__"; (ダブルクォート文字列)
<<'__HTML_START__'; (シングルクォート文字列)
<<`__HTML_START__`; (バッククォート文字列)
というわけですな。参考までに。
0328名無しさん@お腹いっぱい。
2001/08/09(木) 20:10ID:MDUdBd8.配列にセットしたいのですが、どうしたらいいでしょうか?
0329名無しさん@お腹いっぱい。
2001/08/09(木) 20:13ID:???0330名無しさん@お腹いっぱい。
2001/08/09(木) 20:42ID:???の最後の /> は何ですか?
<link rel="made"href="hoge\@hoge.jp">
これじゃ駄目なのでしょうか?
0331名無しさん@お腹いっぱい。
2001/08/09(木) 21:03ID:???Web製作版に逝ってよし
0332名無しさん@お腹いっぱい。
2001/08/09(木) 21:25ID:???XHTML では全てのタグに終了タグが存在し、且つ終了タグの省略が禁止。
んで、省略は出来ないけどその代わりに省略形が存在し、
<link rel (中略)></link>
の省略形が
<link rel (中略) />
というわけ。
大方こんな感じ。
0333名無し募集中。。。
2001/08/09(木) 22:53ID:.n9qBKK2似たようなのが無いからこれ使ってるんですが
これだとカテゴリー内で新しく登録したサイトが上からソートされるんだけど
これを下からソートさせたいんだけどどうすればいいですか?
あと登録したurlにhttp://が含まれない場合はエラー出すようにしたいんですけ
ど
unlessとif(!をどう使えばいいでしょうか?ご教授お願いします(;´Д`)
0334un
2001/08/09(木) 23:18ID:???0335名無しさん@お腹いっぱい。
2001/08/09(木) 23:32ID:qC8qL/U.これはどういう意味なのでしょうか?
「1; Perl」のキーワードで検索してみましたが、出てきませんでした。
0336名無しさん@お腹いっぱい。
2001/08/09(木) 23:37ID:???ざっと見てみたけど、まず並びに関しては、273,275,277行目の"push"を
"unshift"にするか、277行目と278行目の間に
@new = reverse @new;
を加えるかすればいいと思う。
それからエラーは、234行目のifのカッコの中を、たとえば
$in{'url'} !~ m{http://[a-zA-Z0-9\-/.~?%#=&:;+@]+}
とかに変えればいいんじゃないかな。
0337名無しさん@お腹いっぱい。
2001/08/09(木) 23:40ID:???ブール値の1を返す。
0339336
2001/08/09(木) 23:43ID:???$in{'url'} !~ m{^http://[a-zA-Z0-9\-/.~?%#=&:;+@]+$}
0340336
2001/08/09(木) 23:51ID:???並びの方は忘れてくれ。
0341333
2001/08/10(金) 00:02ID:???ありがとうございました。
しかし、並びの方ができませんでした。苦笑
登録した順に上から必ず
3124
41235
512346
このように表示されます。
目が冴えてるときにでも、またお願いします(ノД`、)
0342名無しさん@お腹いっぱい。
2001/08/10(金) 00:07ID:???>>337でわかったのか!?
1を聞いて10を知るとは…スゲェ奴だな。
0344名無し
2001/08/10(金) 01:00ID:???&reload if(!$comment)じゃだめですよね?
0345名無しさん@お腹いっぱい。
2001/08/10(金) 01:09ID:???if ($comment eq "") { &reload; }
0346名無しさん@お腹いっぱい。
2001/08/10(金) 01:09ID:???if ($comment eq "") { &reload; }
0347名無しさん@お腹いっぱい。
2001/08/10(金) 01:12ID:???0348名無しさん@お腹いっぱい。
2001/08/10(金) 01:12ID:???■ このスレッドは過去ログ倉庫に格納されています