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

【Perl】初心者コーナー Part18

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん02/11/20 22:04ID:???
いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。

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

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

CGIだけど、なんか質問ある? Part 8
http://pc.2ch.net/test/read.cgi/php/1032704121/
参考書籍の話題は【Perl,CGI】参考書籍 第三版
http://pc.2ch.net/test/read.cgi/php/1030209573/
その他の雑多な話題は、【CGIに依存しないPerlの話題一般/Part2】
http://pc.2ch.net/test/read.cgi/php/1030548610/
スクリプトの改造依頼は 【 スクリプト改造工房 PART 5 】
http://pc.2ch.net/test/read.cgi/php/1028193595/

過去ログ、その他の役立ち情報は>>2-10あたりを見よう。
013613502/11/30 12:17ID:???
勘違いしてました・・・
上手くいきました、ご迷惑おかけしまスタ
0137nobodyさん02/11/30 13:59ID:/75slB4U
>>132
Math::Bigint 使ってください。
Perlで大きい整数はまともに扱えません。
使い方は perldoc Math::Bigint 読んでね。
0138nobodyさん02/11/30 14:04ID:???
>>129 =125
ttp://www.din.or.jp/~ohzaki/perl.htm
ここの「日本語を扱う 正しくパターンマッチさせる」を読んでくれ。
日本語処理はそう簡単には実装できない。
013912502/12/01 14:00ID:???
>>138
求めていた回答がここにありました。
じつはそこのサイトはこのスレッドの頭にあったので
見ていたのですが、ちゃんと読まずに通過していたようです。
解決することができました。ありがとうございました。

他の皆様も考えてくださったり回答してくださったりして
ありがとうございました。では。
0140nobodyさん02/12/01 21:52ID:???
my @hogelist = ('hoge','piyo','huga');
で作ったをもとに、
hoge,piyo,huga
と表示させたいです。どうやればいいか教えてください。
0141nobodyさん02/12/01 21:55ID:???
s/(で作った)(をもとに、)/$1配列$2/;
0142nobodyさん02/12/01 21:58ID:???
join
0143nobodyさん02/12/01 22:02ID:???
join(",",@hogelist)
0144nobodyさん02/12/01 22:03ID:???
>>142-143様。
ありがとうなのです(^-^)
0145nobodyさん02/12/01 22:06ID:???
>>140
{
my @hogelist = ('hoge','piyo','huga');
my $count =1;
foreach(split(/\t/,join('\t',@hogelist))){
print "," if $count%0x04;
chomp;
print STDOUT;
$count += ($count+1)/0x01;
}

もっと無駄な方法ってないかしらん・・・
0146nobodyさん02/12/01 22:07ID:???
>>145
遅せーんだよ
0147nobodyさん02/12/01 22:22ID:SByI0FEM
あの〜今度HP作ろうと思ってるんです。この機会にUPローダも作りたいんです。
誰かUPローダの作り方教えてください。
作り方を説明してるサイトでもいいんで、お願いします。
0148nobodyさん02/12/01 22:25ID:???
すみません、どなたか御教授ください
CGI::Liteとかのurl_encode,decodeなんですけども、
ある文字列がエンコード済みなのか未エンコードなのか調べる方法は無いでしょうか?
既にエンコード済みの"300%89%7e%82%c5%8d%a1%8c%8e%90%b6%82%ab%82%c4%82%a2%82%af%82%e9%82%a9%89%b4"
とか、未エンコードの"松屋のカレー(゚д゚)ウマー"とか色々な文字列が与えられてくるのですが
それを一律にURLエンコードがされた状態にしたいのです
で、ソレをデコードする時等、エンコードされてるモノはデコードしなきゃいけませんですし、
エンコードされてないモノに、"今日の降水確率は%25ってとこですかね"とか与えら、
デコードしたら変になってしまいますし…

なにかいい方法はないでしょうか?お知恵をお貸しください…
0149nobodyさん02/12/01 22:37ID:???
>>147
レンタルのにしなさい。
>>148
本文につっこみますが日本語がとても難しいです。
もう一度日本語の勉強をしなおしてきます。
($str =~ m#^%.*#)? デコード処理 ;
ではダメ?(やっぱりよくわからん)
0150nobodyさん02/12/01 22:38ID:???
>>148
理論的には不可能だ。
'%22'という文字列だけが来たときに、それがもともと
'%22' という文字列をそのまま送信したのか、
'"'(ダブルクォーテーション)を送信したのか、判別できないだろう。

[\x80-\xff]が含まれていたらエンコードされていないと見なす、くらいで
妥協したら?
0151nobodyさん02/12/02 04:38ID:weXpByrh
確かに、理論的には不可能だが

->decode($str) if $str =~ m/^(?:%[a-fA-F0-9][a-fA-F0-9])+$/;

で、十分実用に耐えると思うが・・・

エンタープライズとかだと、デコードしてないと
error 400になるけど
015215102/12/02 04:39ID:???
デコードしてないと -> エンコードしてないと
0153nobodyさん02/12/02 04:41ID:???
ほの板のスレ一覧の最新5件だけ自分のサイトのTOPに
表示するためには、CGIでどういう記述をすれば良いのか教えて下さい
0154nobodyさん02/12/02 08:03ID:???
>>149
ごめんなさい、意図がよく伝わらなかったようで(汗
えと、とりあえず"与えら"は"与えられたら"です、打ちミスりました

>>150
まだまだワカッテナイので、[\x80-\xff]ってのは日本語が入ってたら、ってことなのでしょうかね
あとは"とか&とかそゆモノが入っていた時もエンコされてないなー、って方針でいいのでしょうか

>>151
%xxが含まれてたらエンコード済み、と解釈するということでしょうか?
>>150さんのと組み合わせたほうがより完璧を期することができそうです

下2行はよくわかんないですけど、ある鯖でやると、ってことでしょうか?

>>153
IO::Socketモジュールとか使えばいいような気がします
にちゃんねる掲示板の仕様はよくしらないのですが、どっかにスレ一覧を保持してるファイルが有った気がします
でもアクセスごとに結構な大きさのファイルを取りに行くと転送料問題とかで怒られそうな気もします
初心者なのでなんか重大な勘違いをしてるかもしれませんがネ…
015515002/12/02 14:17ID:mB0yHtje
>>154
150は適当に書いちゃったけど、
[\x00-\x20"#;<>?{}|\\\\^~`\[\]\x7F-\xFF]
が含まれていたらエンコードされていない、と見なすのは?
まあ>>151さんのでOKだと思うけど。
0156nobodyさん02/12/02 14:53ID:???
DBにfirebirdを使うと思うのですけど、どうですか?
0157nobodyさん02/12/02 14:57ID:???
>>156
使ってみた感想をキボン
0158nobodyさん02/12/02 17:07ID:???
>>157
キボンと言われましても、他のDBをほとんど使ったことがなく
単純に登録、更新、削除くらいしかしないので感想はあまりないです。
ただちょっとデータ量が多そうなのでDBを使ってみるかとなったのです。
0159nobodyさん02/12/02 17:55ID:fz9HS+5s
ttp://kasai.fm/perlHTTP/
上記のサイトを参考にして(というかそのままコピペで)、
WEBページを読み込むCGIを作りました。
しかし、CGIにアクセスしてみたところ正常に読み込めないようです。

$errorMessageは、Can't connect to httpとなっています。
メッセージの意味は分かるのですが、解決策が分かりません。
サーバーの環境は、MacOS10.1.4、Perlのバージョンは5で、自宅サーバーです。

掲示板等のCGIは正常に動いています。
解決策が分かる方、お願いします。
0160nobodyさん02/12/02 17:56ID:VWSOmEHp
>74 :無名さん :02/12/01 23:30
>↑オマエは頭の悪いバンドマンだなーどうせオールナイトイベントに出てた
>スキムミルクっていうバンドだろ?ライブ中の態度でけーんだよ。
>ツアーバンドはノルマとらないんだよ。それからいい音出すPAも雇ってチラシも
>すってんだよ。金かかってるんだよ。そのくせてめえら客よばね―のか?
>Y野氏の組織はやばいからねーパソコンオタクもいるから調べられて
>そんな事言ってるとCHOKOに本当にカツアゲされるぞ。
>2ちゃんねるキラー組織って知ってるかなー君?

↓ここでこんな書き込みを見つけたんだが
恐らくお祭り状態になる予想。興味のある方は是非見てきてくだされ。
http://music.2ch.net/test/read.cgi/minor/1031619119/74

ちなみにCHOKOというバンドのサイト。
http://choko3.hp.infoseek.co.jp/

2ちゃんねるキラー組織キタ━━━)゚∀‘)・ω・) ゚Д゚)゚∀゚)・∀・) ̄ー ̄)´_ゝ‘)-_)゚∋゚)´Д`)・∀。)━━━━!!!
0161nobodyさん02/12/02 18:08ID:???
>>159
ルータ・ファイアウォールとかでポート閉じちゃってるとか?
016215902/12/02 18:16ID:???
>>161
ルーターですか・・・。
大学に持ってきて設置しているせいかも知れません。
もう少し調べてみます。
0163nobodyさん02/12/02 18:16ID:???
>>159
proxyの設定が間違ってるとか
0164nobodyさん02/12/02 18:28ID:+ey3nn6h
>>159
host->IPが取得できないのでは
016515902/12/02 19:12ID:???
>>161-164
レス感謝です。
今日は時間切れの為大学から閉め出されてしまうので、
また明日調べてみようと思います。
ありがとうございました。
0166nobodyさん02/12/02 19:24ID:???
つーか自宅サーバちゃうやん( ´_ゝ`)
0167nobodyさん02/12/02 21:16ID:???
フリーのゲストブックを落としてきたんですが、
そのファイル内にある.cgiなどをFFFTPでアップするだけでいいんでしょうか?
0168nobodyさん <sage>02/12/02 21:21ID:???
>>167
WebprogとかCGIのスレ行ってよ。Perlとぜんぜん関係ないじゃん。

016916702/12/02 22:22ID:???
誤爆でしたスンマセン
0170nobodyさん02/12/02 23:00ID:afn6SBSE
深沢千尋著「初めてのパール」の10章の掲示板を自分で作ってみました。
時間表記をできるように、以下の行を足しています。
($sec,$min,$hour,$day,$mon,$year,$wday,$yday,$isdst) = localtime(time);
@month =('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
@youbi=('Sun','Mon','tue','Wed','Thu','Fri','Sat');
$year += 1900;
if($day < 10){$day = "0$day";}
if($hour < 10){$hour = "0$hour";}
if($min < 10){$min = "0$min";}
$time="$youbi[$wday], $day-$month[$mon]-$year, $hour:$min";
ここで質問なのですが、時間・日を、2時1分が、2:1とならないように、
ifで02:01となるように書きました。
でもこれ、置換処理か何かでもっとスマートに書ける気がするのですが、
具体的にわかりません。どなたか、ご教授願えないでしょうか。
0171nobodyさん02/12/02 23:06ID:???
こんなの?
($day,$hour,$min,$sec) = map {sprintf "%02d", $_} ($day,$hour,$min,$sec);
017217002/12/02 23:06ID:???
「初めての〜」じゃなかった。。。
「すぐわかるパール」でした。
古田たかし著の「初めてのCGI&Perl」と混同しました。
今まで読んだ参考書は、上記2冊です。
0173nobodyさん02/12/02 23:08ID:???
そんな古くさい処理の本捨ててウェブで勉強した方がいいぞ。
@youbi とか、、ダサすぎでしょ。
017417002/12/02 23:16ID:???
>>171
あら素晴らしい!できました!
即レスありがとうございました!
0175nobodyさん02/12/03 01:13ID:???
>>171さんの方法は1行でスマートだけど、

if($day < 10){$day = "0$day";}

なんて方法は最悪の部類ですよ。かなりひどい本だと
断定してもいいです。たぶんこれもkent-webのソース
をダサいままぱくってるのかな?
0176nobodyさん02/12/03 01:18ID:ZhYTYd9T
マッチについての質問です。
データファイルを読み込んで、任意の数字がある場合のみprintしたいと思っています。
for(@log){
if($_ =~ /$num/){
print "$_";
}
}
これでやると、$num=10;とした時、100や101、102....もマッチしてしまいます。
10なら10だけをマッチさせたいのですが可能でしょうか?
0177nobodyさん02/12/03 01:27ID:???
変数たくさんあるの嫌いな漏れはこう書くな。。
後で必要なのは$timeだけだよね?

($min, $hour, $day, $mon, $year) = (localtime time)[1..5];
$time = sprintf "%s, %02d-%s-%d, $02d:%02d".
qw(Sun Mon Tue Wed Thu Fri Sat)[$wday], $day,
qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec)[$mon],
$year+1900, $hour, $min;
0178nobodyさん02/12/03 01:29ID:???
>>176
区切り文字とかってないの?どんなデータファイル?
いちおう /\D$num\D/ で可能だとは思うが
行頭と行末の場合はヒットしないので注意。
017917602/12/03 01:44ID:???
>>178
データファイルは掲示板の書き込みのような文章です。
その文章中(記事番号とかではなくて)に任意の数字がある場合にマッチさせたいのです。

/\D$num\D/を使ったらうまくいきそうです。
ありがとうございました。
0180nobodyさん02/12/03 02:26ID:???
自由度はせばまるが、だいたいは日付の出力はこれでやっている。

$t = localtime;
print $t, "\n";
0181nobodyさん02/12/03 13:18ID:???
htmlの表形式でファイル名と更新日をソートして書き出すというのを
前スレでおしえてもらったのを使いつつやってみてるんですが、、、
perl書くの初めてなんで全然分からず行き詰まり。どなたか助けてください。

my $output = "aaa.html";
open (OUTPUT, ">$output") || die "Could not open file $output : $!\n";

print OUTPUT "(HTMLヘッダ部〜<table>まで)";
print OUTPUT "<tr><th>No.</th><th>filename</th><th>update</th></tr>\n";

my $now = time;
my %files;
opendir(DIR, '.');
while (readdir(DIR)) {
if (($_ =~ /.txt$/i) && ($_ ne "readme.txt")){
$files{$_} = (stat($_))[9];
}
}
closedir(DIR);
0182nobodyさん02/12/03 13:18ID:???
<続き>
foreach $key (reverse sort {$files{$a} <=> $files{$b}} keys %files) {
# このへん分からない
my $last_date = $files{$key};
my $ptime = int(eval(($now - $last_date)/86400));
$title = $key;
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($last_date);
$year = eval($year + 1900);
$mon = eval($mon + 1);
substr($title,-4,4) = "";
print OUTPUT "<tr>\n<td align=\"center\">$i</td>\n";
print OUTPUT "<td>$title</td>\n";
print OUTPUT "<td align=\"center\">$year年$mon月$mday日</td>\n</tr>\n";
# ??
}

(以下続きがある予定)

print OUTPUT "(タグ閉め)\n";
close (OUTPUT);
0183nobodyさん02/12/03 13:37ID:???
>>182
なんでそんなにイバルんだよ!
0184nobodyさん02/12/03 13:41ID:???
>>181-182
なにがわからないのかわからん。
とりあえず$iはずっと''だと思うが。
0185nobodyさん02/12/03 15:16ID:???
すいません。
>print OUTPUT "<tr>\n<td align=\"center\">$i</td>\n";
の行はいらないんで、$iは無視してください。

sortしたのをforeachでちゃんと回るようにしたいんですが。
0186nobodyさん02/12/03 18:16ID:???
どうしてちゃんと回ってないと?
新しい順に並ばないか?
0187 02/12/03 21:04ID:???
foreach() 以下の{ }の中が間違ってるぽいんですが
どこをどう直せばいいのかも分からず。。
0188nobodyさん02/12/03 21:12ID:???
>187
プログラミングPerlを買ってきて読め。
それで全て解決。
0189184=18602/12/03 22:07ID:???
だからさ。
このスクリプトなら新しい順に並ぶでしょう?
並ばないなら、どうなるのか教えて欲しい。エラーが出るのか?
で、最終的にどうしたいわけよ。

%filesにどんな値が入るか観察してみるとわかるかもな。
0190 02/12/03 22:57ID:???
並べ替えた順にファイル名と更新日を<table>の形で出力したいんですけど、
実行して生成されるhtml見ると、この部分(foreach(){ }の中)が抜けてて、
ヘッダとフッタの部分だけになっちゃうんで。。
0191nobodyさん02/12/03 23:23ID:lLuHX1/s
$time = localtime;

$time(10桁の数値)を出来るだけ少ないバイト数に可逆圧縮したいのですが、
どうすればよいでしょうか。
例えば16進数で表記すると、
1037797479(10byte) → 3DDB8867(8byte)
で2byte縮むことになります。
ただ、圧縮後の数値は aタグにのせてリンクするので、(<a href=test.cgi?i=3DDB8867>)
URLに使えない文字だと駄目なのですが。

よろしくお願いします。
0192nobodyさん02/12/03 23:33ID:???
>>191
そんなことをする意味は……それは言わんでおくか。

URLに使える文字のテーブルを作って、仮にそれが50個あった場合は
timeの数値を50進数に変換したあと、テーブル引いて文字化する。
受け取る側では逆のことをやる。これなら5〜6文字ぐらいにできるんでない?
0193nobodyさん02/12/03 23:38ID:???
>>181
foreach (readdir(DIR)) {
0194nobodyさん02/12/04 00:01ID:???
>>192
ありがとうございます。
目的は携帯サイトの2k制限を如何にクリアするか、ということなんです。
その為にHTMLに出力する部分は出来るだけ文字数を落としたいのです。

(0..9,a..z,A..Z,_,-)
仕様上URLでそのまま送れる文字は上記と、'.'、'*'だけみたいですので、
そうなると64進数が限界でしょうか。。
ご意見ありがとうございました。
0195nobodyさん02/12/04 00:09ID:???
>>194
4バイトにできるだろ

ちなみに以下は10桁の数値が代入されることはないと思うが
$time = localtime;
0196nobodyさん02/12/04 00:14ID:???
>>195
あ゛あ゛あ゛恥ミス発見!
ご指摘の通り $time = time; でした。

64^4 = 16777216
で、10桁は表現できないと思うのですが・・
4バイトで表現するにはどうしたらいいんでしょうか?
019718902/12/04 00:23ID:???
>>199
おお。すまん。
foreachと言うのでそこばかり気にしていたよ。

while (readdir(DIR)) {
を>>193のように
foreach(readdir DIR){
とするか
while($_ = readdir DIR){
としてみれば解決すると思うぞ。
0198nobodyさん02/12/04 01:33ID:???
>>196
1970年のデータが必要かどうか判りませんが、
もし最近のものならその数字(timeの戻り値)自体を減らしてみてはどうでつか?
$time = time - 946684800;
2000年01月01日午前00時00分00秒を0とするとか。
0199nobodyさん02/12/04 01:33ID:???
>>196
>>195は、timeの値が4バイトだと言ってる。つまり32ビット。
で、64通り=6ビットの場合、6文字必要。
でも、何十年も使う訳じゃないだろうから、timeから1000000000を
引いた値を5文字(30ビット)で格納、でどうかな。
020019902/12/04 01:34ID:???
うわ。もろかぶった。
1時間前のカキコに…笑
020118102/12/04 09:10ID:???
ありがとうございます。できました。
020219602/12/04 11:17ID:???
>>198-199
なるほど!理解できました。
確かに最近のものだけなので、timeの戻り値を減らしてみます。
この度はどうもありがとうございました。
またよろしくお願いいたします。
0203nobodyさん02/12/04 15:23ID:???
単純に10回、回したい時、
for (1..10){
 print "うんこ\n";
}
こういう書き方はありですか。
0204nobodyさん02/12/04 15:48ID:???
>>203
あり
0205nobodyさん02/12/04 18:01ID:7+5xaubm
perlソース中の定数を、外部ファイルに書き出して扱いたいんだけど、
linuxの設定ファイルでよくある「.conf」ってなにか規格があるの?
perlから簡単に扱えるようなモジュールはありますか?
0206nobodyさん02/12/04 20:05ID:???
>>205
意味があまりよく判りませんが、「.pl」や「.cgi」など、AddHandlerで設定した拡張子にしておくと、直接ブラウザで見られたときに、エラーが返ってくるので安心かもしれません。
0207nobodyさん02/12/04 20:41ID:???
>>205
Windowsでいうところの.iniやMac OS Xでよく使われているようなplist
みたいに、設定ファイルのデファクトスタンダードな規格はあるのか?
ってことでしょ? 無いと思う。

CPANにいけば、設定ファイルをごにょごにょするモジュールはいっぱい
あるので、検索してみることをお勧め。
0208nobodyさん02/12/05 02:20ID:???
>>205
ここに有るものを好きに選ぶよろし
http://cpan.org/modules/by-category/02_Perl_Core_Modules/Config/
02091/2 長文すいません。。02/12/05 04:48ID:jP9xslt3
foreach (1 .. 3) {
timethese(1000, {
foreach => sub {
open(FILE, '/test.data');
my @data = <FILE>;
close FILE;
foreach (@data) {
tr/E//;
s/a/e/g;
}
},

while => sub {
open(FILE, './test.data');
while (<FILE>) {
tr/E//;
s/a/e/g;
}
close FILE;
},

});
}

02102/2 長文すいません。。02/12/05 04:48ID:jP9xslt3
Benchmark: timing 1000 iterations of foreach, while...
foreach: 2 wallclock secs ( 0.19 usr + 1.21 sys = 1.40 CPU) @ 713.78/s (n=1000)
while: 2 wallclock secs ( 0.46 usr + 1.72 sys = 2.18 CPU) @ 457.88/s (n=1000)
Benchmark: timing 1000 iterations of foreach, while...
foreach: 1 wallclock secs ( 0.22 usr + 1.12 sys = 1.34 CPU) @ 745.71/s (n=1000)
while: 2 wallclock secs ( 0.55 usr + 1.59 sys = 2.14 CPU) @ 466.42/s (n=1000)
Benchmark: timing 1000 iterations of foreach, while...
foreach: 1 wallclock secs ( 0.21 usr + 1.19 sys = 1.40 CPU) @ 713.78/s (n=1000)
while: 3 wallclock secs ( 0.52 usr + 1.71 sys = 2.23 CPU) @ 447.63/s (n=1000)

foreach の方が速いんですけど、Benchmark の使い方間違っていますか?
この2つではよく while を使えといわれますが、それは速さではなくて別の要因があるからなんでしょうか?
配列にいれると大きなファイルだとメモリを圧迫するとか。
whileで回すとその心配はないのかな?
0211209-21002/12/05 04:51ID:???
あれっ!?foreach のパスが間違ってる!!
やっぱりwhile のほうが速いですね・・・・。
すいませんでした。。
0212nobodyさん02/12/05 09:57ID:???
>>111さん
有難うございました。
0213正規表現・・・・02/12/05 13:08ID:vPIO4lyL
だみだ。正規表現ってさっぱりわかんねぇ。

$test =<<"TEST";
ここから始まりです。
<FOO>
hogehogehoge
hogehogehoge
hogehogehoge
</FOO>
ここで終わりです。
TEST

という文字列から<HOGE>から</HOGE>までを抜き出したい場合。
Perlでどんな風にかきゃいいんでしょう?

正規表現道場過去ログには
m[<FOO>.*?</FOO>]sのようにすればイイみたいな事が書いてあるんだけど

$test =~ m[<FOO>.*?</FOO>]s;
print $test;

てな感じでやってみると、$testはなにもされてません。
0214nobodyさん02/12/05 13:14ID:???
$test =~m[<FOO>(.*?)</FOO>]s;
print $1;
0215nobodyさん02/12/05 13:15ID:???
$test =~ m[(<FOO>.*?</FOO>)]s;
print $1;
0216正規表現・・・・02/12/05 13:31ID:vPIO4lyL
なるほどぉ。特殊変数ってのはそう言う意味だったのかぁ。
感謝です。
0217nobodyさん02/12/05 15:55ID:34DLd1c6
教えて下さい。
ファイルオープンでエラーが出た場合に
処理を続行したいのですがエラーをクリアーする
関数などはあるのでしょうか?
また、読み込みの場合でもファイルロックをかける必要は
あるのでしょうか?
0218nobodyさん02/12/05 16:19ID:???
> ファイルオープンでエラーが出た場合に
> 処理を続行したいのですが

開けなかった場合中断するってな風にプログラムしてなきゃ普通に処理を続行しますが。

>また、読み込みの場合でもファイルロックをかける必要は
>あるのでしょうか?

読み込みしかしないファイルなら必要ありません。
更新されるファイルならした方がよいでしょう。
0219nobodyさん02/12/05 16:58ID:34DLd1c6
>>218さんありがとございました。
勉強になりました
0220nobodyさん02/12/05 18:12ID:x3XgL2vW
すみませんが、
Jcode.pmをniftyで動かす方法を、教えていただけないでしょうか。
0221nobodyさん02/12/05 22:49ID:???
CGI(掲示板スクリプト)をtaintモードで動かしたいのですが、
#!/usr/local/bin/perl -T
とするとエラーになって動作ません。
原因としてどんなことが考えられるのでしょうか?
0222nobodyさん02/12/05 23:03ID:qFEbS8pn
DB_File.pmが必要なんですがプロバイダにインストールされてません。
これってプロバイダに言えばインストールしてくれるもんでしょうかね?
諦めて自宅鯖にしたほうがよいですかね?
0223nobodyさん02/12/05 23:07ID:???
>>220
Niftyは標準モジュールも入ってないし無理じゃない?

>>221
Tオプションの意味が分かるなら答えもおのずと分かりそうなモンですが。

>>222
プロバイダによってポリシーが違うだろうし、プロバイダに聞けとしか言いようがない。
0224nobodyさん02/12/05 23:07ID:???
>>222
だ・か・ら そういうことって、まずプロバイダに聞けばいいことじゃん
022522302/12/05 23:09ID:???
>>224
ふしだらものですがよろしくお願い致します
0226nobodyさん02/12/05 23:10ID:???
>>223
>Tオプションの意味が分かるなら答えもおのずと分かりそうなモンですが。
以外とそうでもないようです。
0227nobodyさん02/12/05 23:17ID:???
それどころか質問の仕方も分からない、と。

エラーメッセージぐらい書いても罰あたらんだろうに。
0228nobodyさん02/12/05 23:20ID:???
どうせ汚染チェックしてないとかアホ理由だろ。
0229nobodyさん02/12/05 23:27ID:???
ちょっと動揺してたのでテンプレの存在を忘れてますた。おめんなさい。
1:自分はこう言う事がしたい。
掲示板のフォームから送られてくるデータの汚染チェックをしたい。

2:それでこんな風にやってみたが・・・
#!/usr/local/bin/perl -T
としてみた。

3:それだとこんなエラーが出て上手く行かなかった。
The script did not produce proper HTTP headers.
Please see the error log to see the detail of the errors.

あと226は多分漏れじゃない誰かです。
0230nobodyさん02/12/05 23:39ID:???
The script did not produce proper HTTP headers.
Please see the error log to see the detail of the errors.

適切なHTTPヘッダを吐いてない。
エラーの詳細はエラーログで見れ。

って書いてるじゃん。
0231nobodyさん02/12/05 23:41ID:???
>>229
エラーメッセージを読め。
簡単な英語くらい理解すれ!
辞書引け!
0232nobodyさん02/12/06 00:35ID:???
perlで下記のようにモジュールを作る場合、別ファイルのあるモジュールからは
MODULEしか使わないのですが、require 'aa.pl' と use MODULE; では速度や
負荷は変わらないですか?

aa.plの内容
#------↓ここから
packege MODULE;
・・・
1;

package MODULE2;
・・・
1;
#------↑ここまで
0233nobodyさん02/12/06 00:41ID:???
1; が二つある。。
0234nobodyさん02/12/06 00:46ID:???

aa.plをuse MODULE;では呼び出せないと思うが。
023523202/12/06 00:50ID:???
スマソ。

a.pm
--------------------
package MODULE;
・・・

package MODULE2;
・・・
1;
-------------------

b.pl
-------------------
use MODULE; # または require 'a.pm';
         # MODULE2は使用しない。
0236nobodyさん02/12/06 01:07ID:???
えーとa.pmなら

use a;

になると思うのですが。
でOOPなら
$hoge1 = new MODULE;
$hoge2 = new MODULE2;

$a = $hoge1->hoge( $xxx );

とかに
単に関数を呼び出すだけなら

$a = MODULE::hoge();
$b = MODULE2::hoge();
■ このスレッドは過去ログ倉庫に格納されています