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

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

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

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

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

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

過去ログやお勧めサイトは >>2-10
0175nobodyさん2006/07/03(月) 20:50:54ID:???
>>172
自分のページにフォーム作ろうなんて考える利用者はHTMLぐらいかけるでしょ普通
で、文字コード別にフォームのソース置いといて、化けない奴使ってね、て書けばたぶん分かる。
何にも知らない人はそもそも変なフォームから送信してこないので問題ないと思う・・・

>>173
フォームから入力したいって言ってるんだからGETメソッドに対応しなければいいのでは?
どうしてもGETも対応したいって場合も、ばけたら&en=***なんとかを付けて見て下さいみたいな
誘導でなんとかなりそう・・・
そもそも、アドレス欄からクエリー送信してくるのは上級者だと思う
0176nobodyさん2006/07/03(月) 20:51:54ID:???
>>174
読み込みで開いてるので消えない
0177nobodyさん2006/07/03(月) 21:08:28ID:???
ブラウザに送ってくる文字コードを指定する方法があって、すべてのブラウザが
それを守ってくれればいいのだが、とんでもないのが存在するのも現実だ。

一番ひどいと思ったのはhiddenとそれ以外で別のコードで送ってきやがった
某ブラウザ。数年前の話だから今は改善されてるかな。
0178nobodyさん2006/07/03(月) 21:11:39ID:???
>>174
176の指摘はおいとくとしても、偶然同じ長さの行に書きかえるのでない限り
それ以後の内容を前後にずらす必要があるので、そういうことは考えるだけ
無駄ですな。

File::Inplaceの使用をお勧めする。
0179nobodyさん2006/07/03(月) 21:14:39ID:???
>>174
一気に read でファイルの中身全部読み込んじゃって、
あとは s{^(マッチ条件).*}{ 処理 }em; とかして、
一気に書き出せばいいんじゃね?
01801742006/07/03(月) 22:04:52ID:DxhEPLl+
>>176
いや、確かにファイルの中身自体は消えてませんが、そういうことでは…。

>>178
多少の無駄には目をつぶって最後まで走らせておくのが吉なんですかね。
File::Inplaceについては調べてみます。ありがとうございました。

>>179
確かに正規表現で1回マッチ直後に処理すれば、無駄はなくなる…けど、
処理そのものの負担が大きくなってしまうような…。


色んな場面で必要にかられる処理だと思ったので、
他の人はどんな風に処理してるのか適当にCGIを見てみたところ
>>174に書いてあるのが結構多かったかも。
中には
open(FH,$FILE);
my @data = <FH>;
my $loop = @data;
my $i;
while($loop>0){
@temp = split(/ /,$data[$i]);
if(マッチ条件){
処理
last;
}
$i++;
$loop--;
}
ってのも、ありました。ちょっとゴテゴテしてるなぁ。
0181nobodyさん2006/07/03(月) 22:05:46ID:???
KENTを見て育ってる者だ。
よくlocal何て使わないでmyと書いてあるがすべてmyにしたらダメだよね?
ちょっと違いが分からないので教えて欲しい・・・。
0182nobodyさん2006/07/03(月) 22:14:19ID:???
>>180
> 処理そのものの負担が大きくなってしまうような

何でそう思うのかkwsk

my @data = <FH>;
↑こんなことしてる方がよっぽど負担強いてると思うぞw

>>181
コーチ変えたほうがいい。
0183nobodyさん2006/07/03(月) 22:19:42ID:???
>>182
KENTが一番楽だったからそれにしてたいが今更コーチ変えろって
簡単で見やすいスクリプトなんてあるの?
何せKENTのスクリプトをみて覚えてきた人間だから今更となると見やすいスクリプトじゃないの無理な気がする。
0184nobodyさん2006/07/03(月) 22:20:53ID:???
>>183
じゃあそのままでいろよ。
0185nobodyさん2006/07/03(月) 22:24:31ID:???
っていうかKENTが神、ってネタか釣りなんだろ?そうなんだろ?
0186nobodyさん2006/07/03(月) 22:48:13ID:???
KENTがperl5で全部書き直すか、プログラムの配布を止めれば
状況は変わると思う。
0187nobodyさん2006/07/03(月) 22:54:50ID:???
>>174
任意の一行ってことはマッチする行がはじめから一行しかない
事が分かってるってことですかね?
それともマッチした最初の行だけとか、?(それだと174はまずいですよね・・・
ファイルの構造が固定してるなら、該当する行をダイレクトに指定
できる可能性とかはありえない・・・?
0188nobodyさん2006/07/03(月) 23:07:15ID:???
KENTはKENT未満の読むに値しない汚いスクリプトから初心者を守ってるから神。
0189nobodyさん2006/07/03(月) 23:16:27ID:???
つか、皆から見てKENTのソースってどうなん?
初心者のオイラにはなんのこっちゃか分からない行がたくさんあって、ちょっと嫌
0190nobodyさん2006/07/03(月) 23:20:54ID:???
つい最近前スレだかでも話題になったからパス。
セキュリティくらい考えて作れよー。

まあKENT儲は ∩( ´∀`)∩コチラヘ (っ´∀`)っ))ドウゾ

KENT WEB 総合スレ Part2
http://pc8.2ch.net/test/read.cgi/php/1078991985/
0191nobodyさん2006/07/03(月) 23:32:34ID:???
>>181
…向上心があるなら、出来るだけ早い内にPerl5流に馴染んでおいたほうが楽だぞ。本当に…
きっと、各種モジュールに興味が出てきた頃に、矯正するのに時間がかかって苦労する。というか、した。
# 独学だと何がまともなのか、判るようになるまでが難しい

閑話休題。多くの場合では、myに置き換えて大丈夫だと思う。
localとmyの違いは効果の範囲が動的…プログラムの流れに沿ったものか、
静的…ソース上のブロックに対応したスコープか、と言うのが一番の差。
以下、差を顕著にするためのどうしようもない汚い例。
sub fuga { $foo }
sub hoge_my { my $foo = 'hoge'; print 'my: ', fuga(), "\n" }
sub hoge_local { local $foo = 'hoge'; print 'local: ', fuga(), "\n" }
$foo = 'outer'; hoge_local(); hoge_my();
---------------
local: hoge
my: outer

あと型グロブのように、単純にmyに置き換えることの出来ないものもあるけれど、
これも、出来る限りリファレンスを使って書くのがPerl5流。
localの出番はPerlで定義済みの変数($/の類)とか。

何か大事な点がすっぽ抜けてたら、フォロー宜しくお願いします。
0192nobodyさん2006/07/03(月) 23:36:24ID:???
local は変数宣言ではないので、use strictすると
local しただけではエラーになるので注意。my か our などが必要。
0193nobodyさん2006/07/03(月) 23:37:39ID:???
>>191 は親切すぎるぜ…
01941742006/07/03(月) 23:46:28ID:DxhEPLl+
>>182
>何でそう思うのか
いや、単純に感覚的なものなので間違ってたらすみません。
ファイルの中身が数千行とかあった場合で、
該当する行の情報もそこそこ大きい場合、
全部読み込んで正規表現にかけるより
1行ずつチェックした方が良さそうに思っちゃいました。

>>187
>任意の一行ってことはマッチする行がはじめから一行しかない
>事が分かってるってことですかね?
その通りです。でも、その行はどこにあるのかは分からないし流動的。
掲示板とかアクセスログとかのログと同じようなもんですね。
なので、ダイレクトに指定することはできないです。
0195nobodyさん2006/07/04(火) 00:01:32ID:???
>>194
数千行ならさあ、
数千回ループさせて、数千回ファイルからデータとってきて、数千回 @array にその大きいデータを push するのと、
改行の数なんか関係なく 1回 read して $scalar に入れて 1回だけ置換 するのと、
総合的にどっちが良さそうに見える?

まあその数千行のファイルが ウン十Mb とかなら話は変わるけど、そんな規模のデータファイル作ったりはしないよね。
とりあえずいくつか方法で迷ったらベンチでもとっとけばいいと思う。
0196nobodyさん2006/07/04(火) 07:41:17ID:???
DB使ったほうが楽だと思うけどね。途中だけ書き換えるとか
かなり不毛。ファイルを編集するのが目的ならしょうがない
かもしれないが、データ保存用ならいくらでもやりようがある
はずだ。
0197nobodyさん2006/07/04(火) 10:28:25ID:???
こういう話題だとDB使えって人はクライアントの仕事したことないんかね?
0198nobodyさん2006/07/04(火) 12:30:08ID:???
ファイルが大きくなるなら、複数のファイルに分けて、インデックスも作っておく。
掲示板のログと一緒。
0199nobodyさん2006/07/04(火) 12:47:20ID:???
$titleに入っている題名の間隔を空けて表示したいのです
置換でなかなかうまく行きませんでした
良い方法はありますか?
0200nobodyさん2006/07/04(火) 13:02:03ID:???
エスパー頼む
0201nobodyさん2006/07/04(火) 13:11:56ID:???
$title =~ s/([\x80-\xff].|[\x20-\x7e])/$1 /g;
0202nobodyさん2006/07/04(火) 13:27:20ID:???
>>199
css使いなさいな
0203nobodyさん2006/07/04(火) 14:42:27ID:???
>>201
ありがとうございます

CSSの本も2冊買っているのですがじっくり取り組む時間がなくて
これもやってみます
0204nobodyさん2006/07/04(火) 22:40:59ID:???
>>174
もう、納得すみかも知らんが

#!/usr/bin/env perl -w
my @data = ();
my $flag = 0 ;
while ( <> ){
if( /print/ ){ s/print/say/ ; $flag ++ }
push @data, $_ ;
last if $flag != 0 ;
}
push @data, <> ;
print @data ;

これを hoge.pl として保存して
% perl hoge.pl hoge.pl
してみそ?
0205nobodyさん2006/07/04(火) 23:22:36ID:???
foreach $loopsubject(@datname){
foreach(@localsubject){
if($_=~/$loopsubject/){
$localsubjectmatchswitch=1;
last;
}else{
$localsubjectmatchswitch=0;
}
}
}
のようなスクリプトを書いたのですがif($_=~/$loopsubject/)で判定してくれません。
判定後の処理にprint "match";を書いてみると何も帰ってきません。
@datnameの内容は
1152013113.dat
1152013147.dat
のようなものです。@localsubjectには2chのsubject.txtのような内容が入っています。
@loaclsubejctの中に@datnameの中身が入っているか判定したいのです。
入っていたらスイッチを1にしてループを終了させて、ループが全部終わったときに
スイッチが0だったら書き込みの処理をしたいです。

なぜ判定してくれないのでしょうか?教えてください。お願いします。
0206nobodyさん2006/07/04(火) 23:32:02ID:???
2行目に
chomp $loopsubject ;
入れてみるとか…。
02072052006/07/04(火) 23:57:29ID:???
>>206
ありがとうございます!検出はうまくいきました!
でも今度はすでに@localsubjectにあるはずなのに無いと検出されます…なんででしょうか?いろいろ試してみたけどわかりません。
スイッチの検出は
if($localsubjectmatchswitch==0){
$writesubject=$datname[$i]."<>".$threadtitle[$i];
unshift(@localsubject,$writesubject);
}
のようにしてやってます。
0208nobodyさん2006/07/05(水) 00:06:26ID:???
まさか last で外側の foreach ループまで一緒に抜けるとは思ってないよね・・・?
内側の foreach ループのあとに、フラグに関する処理が入ってるんだよね・・・?
0209nobodyさん2006/07/05(水) 00:07:58ID:???
お前さん
>>205 では
$localsubjectmatchswitch=1;
ってマッチしたとき 1 代入してんのに
>>207
では 0 のときの処理を書いてるよ。
0210nobodyさん2006/07/05(水) 00:12:06ID:???
>>205,207 が何やってるか全然わからないのは俺の頭が悪いだけかな?
0211nobodyさん2006/07/05(水) 00:16:10ID:???
変数名が長い
0212nobodyさん2006/07/05(水) 00:29:19ID:???
>>208,209
内側のforeachループでローカルsubject.txtの中身を調べて
マッチしたら1を返してすべてにマッチしてなかったら処理をするようにしています。0の時の処理を書いてるのはそのためです。
外側のforeachループは検索語を順番に処理するようにしてあります。
で、どうしたらいいんでしょうか?理論的には問題が無いように見えるのですが…
なぜマッチしたはずなのにマッチして無いとみなされるんでしょうか?
>>211
変数名長くしないとわからないアホな子なんです。許してやってください。
02132052006/07/05(水) 00:31:21ID:???
>>212は>>205です。名前欄入れ忘れました。すいませんでした。
>>208
>内側の foreach ループのあとに、フラグに関する処理が入ってるんだよね・・・?
そのとおりです。
0214nobodyさん2006/07/05(水) 00:42:12ID:???
まさかと思うけど
$localsubjectmatchswitch
の初期化はきちんと入れてるよね。>>205の2行目
(>>206のchompの次の行)あたりに。
0215nobodyさん2006/07/05(水) 00:46:40ID:???
>>214のことは忘れて
02162052006/07/05(水) 00:48:32ID:???
>>214
入れてませんでした。でも入れても結果が変わらない…マッチして無いとみなされてsubject.txtに書き込まれる…
それと、なぜか一回で2重に(同じ内容が2行)書き込まれます。これもforeachあたりの間違いだと思うんだけどどこが悪いのかわからない…
アドバイスください。お願いします。
0217nobodyさん2006/07/05(水) 00:52:05ID:???
つーか$iがどこから来るのかもわからん。
0218nobodyさん2006/07/05(水) 00:56:39ID:???
ソースをうpしてくんないかな。
全容が見えなさすぎ
0219nobodyさん2006/07/05(水) 01:05:56ID:???
配列の数少なくして一回一回内容 print してデバックすればわかるだろ?w
エスパー求めすぎ。
02202052006/07/05(水) 01:23:12ID:???
>>218
http://kasamatusan.sakura.ne.jp/cgi-bin2/src/ichi42709.txt.html
ソースうpしました。アドバイスお願いします。
>>217
$iは忘れてました。つけたら少しはまともな動作をするようになりましたが求めていたものとは違いました。
0221nobodyさん2006/07/05(水) 01:44:31ID:???
my の変数の羅列で吹いたw
02222052006/07/05(水) 01:50:05ID:???
書き忘れてました。問題の部分は95行目から120行目までです
0223nobodyさん2006/07/05(水) 01:51:31ID:???
>>205 のループってさ、
@localsubject のどれかが、
@datname の最後の値 ( @datname[ $#datname ] ) にマッチしたら 1、マッチしなかったら 0
ってことなんだけど、それは処理としていいの?
どうみても @datname の最後未満の値は、マッチしようがしまいが関係ないって感じだよね。
02242052006/07/05(水) 02:27:35ID:???
>>223
>@datname の最後の値 ( @datname[ $#datname ] ) にマッチしたら 1、マッチしなかったら 0
ってことなんだけど、それは処理としていいの?

@datnameは外側のforeachでまわしてるから全部にマッチしてるかどうか確かめてあるはずですけど…
判定ルーチンが内側のforeachのすぐ後ろに来るから判定はしてくれてるはずです。

いまいろいろやって、とりあえずローカルにsubject.txtを書き出すのはうまくいったみたいです。
あとは、これが2重に書き込まれないようにするためにしないとなんだけど、そこの処理をやってるのが96〜111行目なんですよね。
で、そこがうまくいってないみたいです。$localsubjectmatchswitch=0;になるときの処理に
print "nomatch";を加えたらすでにローカルsubject.txtに書き込んである場合でもnomatchを返されました。
だからif($loopsubject=~/$loopdat/)が問題ですかね?
それとも@datanameの内容が2つあるから違うほうの内容に反応してnomatchを返すことになってるのでしょうか?
でもforeach $loopsubject(@localsubject)で内容全部まわしてるから1つでもマッチしたら2重に書き込みはされないはずですけど…
なんでまずいのかわからないのでアドバイスお願いします。
0225nobodyさん2006/07/05(水) 02:39:35ID:???
>>224
一回寝て朝もっかい考えなさい、このおバカw
0226nobodyさん2006/07/05(水) 02:42:02ID:???
1152013147.dat<>エロゲ実況 黄金の蜂蜜酒で一線越え (290)
こんなの保存して楽しいのか
0227nobodyさん2006/07/05(水) 02:55:40ID:???
どうせ print すんなら print "no match : '$loopdat'" とか書いてやれよ。
02282052006/07/05(水) 02:59:19ID:???
>>225
これが気になって眠れません。寝たほうがいいってか寝ないとなんですけど…
>>226
テスト用の検索ワードが思いつかなかったため適当に目に付いたスレを選んだのです。特に深い意味はありません。

原因が判明したっぽいです。103行目あたり、foreach $loopsubject(@localsubject){
でローカルのsubject.txtを解析するのですが、$loopsubjectをループ内でprintしてみたところ最後の1行しか表示されませんでした。
全部表示されるはずのローカルsubject.txtが表示されないということはマッチも出来ないわけですからnomatchになるということだと思います。
で、どうにかしたいんですがどうしたらいいんでしょうか?foreachで表示されないなんてことは初めてなのでわかりません。アドバイスお願いします。
0229nobodyさん2006/07/05(水) 03:04:35ID:???
> open(F,">>$localsubjectpath")||die"subject.txtをopen出来ません:$!";
> @localsubject=<F>;

これかwwwwwwww
>> とか < とかの区別もできない子だったんですね。
0230nobodyさん2006/07/05(水) 03:07:22ID:???
ただ単に「キーワードが全部含まれる」AND検索がしたいだけちゃうのかと
02312052006/07/05(水) 03:22:39ID:???
>>229
ファイルオープンの時につけるのって>と>>しか知らなかった…今ググってはじめて知った…orz
読み込みは出来るようになりました。迷惑かけて本当すみません。
でも、2重に書き込んじゃうのがどうしてもなくならないんですけどどうしたらいいんですか?
もう散々どこが悪いのか探したけどわからないんです。多分これが最後の質問です。お願いします。
0232nobodyさん2006/07/05(水) 03:33:40ID:???
>>231
直したのはわかったけど、それでマッチするようになったのかマッチしないのかぐらい書いてよ。
どうでもいいけど、 chomp $loopdat; → $loopdat =~ s/[\r\n]+$//; とかのがいいかもね。
0233nobodyさん2006/07/05(水) 04:07:21ID:???
つか、こんなん動かしてたら一瞬でアク禁だけど、その辺の覚悟はできてるんだよね?
0234nobodyさん2006/07/05(水) 04:27:05ID:???
ttp://kasamatusan.sakura.ne.jp/cgi-bin2/src/ichi42719.txt.html
あ…ありのまま 今 起こった事を話すぜ!
『myの羅列とインデントにくらっと来たと
 思ったらいつの間にか作り直していた』
「今時Perl4」とかそんなチャチなもんじゃあ 断じてねえ
もっと恐ろしいものの片鱗を味わったぜ…

>>231
漏れのところでは開くモードを適切に変更して関連部分を修正すれば一応動くがなぁ…
+<モードで開いた?それとも<で読み込んだ後、一旦閉じて>モードで開きなおし?
もし+<モードなら、seekしてないんでないのか。

あと直接関係無いが、112行目の$iのインクリメント位置が間違ってる。

>>232
いや、そもそも@datnameには改行は入ってこない。
<>でsplitした前半相当だから。
0235nobodyさん2006/07/05(水) 04:35:40ID:???
>>234
オメガワロスwwwww
ようやるわーw
>>205の意見を聞こうッ!!!
0236nobodyさん2006/07/05(水) 04:42:04ID:???
>>234
あるあるwwwwwww 俺もイラッときて書き直してたw
0237nobodyさん2006/07/05(水) 05:00:47ID:???
でもごくたまに、cgi 配布サイト? とかでも my 羅列してたりするよなw
一応 use strict 通るけど、あんなじゃ kent local と変わんないっつー。
0238nobodyさん2006/07/05(水) 07:41:25ID:???
すっかりVIPのスクツになってしまったな
0239nobodyさん2006/07/05(水) 14:04:38ID:???
my羅列ってC厨だろwしかも書けないくせにww
0240nobodyさん2006/07/05(水) 14:08:45ID:???
my羅列って、とにかくmy使えるところには極力myを、ってこと?
それって良くないことなのか?
むしろ推奨!みたいな感じだと思ってたので詳しく教えてくれ。
0241nobodyさん2006/07/05(水) 14:28:40ID:???
>>240
>>220 のソース見ればわかる。
0242nobodyさん2006/07/05(水) 14:35:34ID:???
>>241
その羅列は想定外
0243nobodyさん2006/07/05(水) 14:39:12ID:???
>>240-242の流れにワロタwww
0244nobodyさん2006/07/05(水) 15:12:35ID:???
>>240-242
どひゃー。ぶったまげた。wwww
0245nobodyさん2006/07/05(水) 17:04:50ID:???
ってか205出てこんかーいっ
0246nobodyさん2006/07/05(水) 17:13:00ID:???
たぶん 205は >>234 のソースを3日くらいかけて解読してるとこw
0247nobodyさん2006/07/05(水) 18:10:57ID:???
これはびっくり
0248nobodyさん2006/07/05(水) 18:24:10ID:???
>>234の解析に3日かかったら、>>220の解析は33日かかりそうだw
0249 ◆TWARamEjuA NGNG
(´-`).。oO(むりやりOopにした0chみたいな。。。)
02502052006/07/05(水) 20:56:42ID:???
   $i=0;
   foreach $loopdat(@datname){
   chomp $loopdat;
   $datmatchcheck{$loopdat}=0;
      foreach $loopsubject(@localsubject){
      if($loopsubject=~/$loopdat/){
      $localsubjectmatchswitch=1;
      print "match:$loopdat\n";
      last;
      }else{
      $localsubjectmatchswitch=0;
      print "nomatch:$loopdat\n";
      }
      }
   if($localsubjectmatchswitch==0 && $datmatchcheck{$loopsubject}==0){
   $datmatchcheck{$loopsubject}=1;
   $writesubject=$datname[$i]."<>".$threadtitle[$i];
   unshift(@localsubject,$writesubject);
   }
   
   $i++;
   }
このようにしてみました。しかし、2重に書き込まれてしまいます。
多分@localsubjectの中身を何度もまわすので、それでマッチして無いのがマッチして無いとみなされるみたいです。
2重に書き込まれないようにするにはどのようにチェックしたら良いでしょうか?アドバイスください。お願いします。
$datmatchcheck{$loopsubject}のようにしてみましたがこれではうまくいきませんでした。
0251nobodyさん2006/07/05(水) 21:10:50ID:???
(´-`;).y-。oO (・・・さてどうしたもんやら・・・)
0252nobodyさんNGNG
まず変数名をどうにかしろよw
0253nobodyさん2006/07/05(水) 21:32:17ID:???
わざと
$localmyforeach;
$elsifwhile;
$unshiftopen;
みたいな変数名つけたらエラく読みづらくなるんだろうな…。
0254nobodyさん2006/07/05(水) 21:43:47ID:???
foreach $tmpsub(@loaclsubejct){
  $found = 0;
  chomp;
  foreach $tmpdatname(@datname){
    chomp;
    if($tmpdatname =~ /$tmpsub/){
      $found = 1;
      $founddat = $tmpdatname;
      last;
    }
  }

  if($found){
    push(@founds, "$founddat<>$tmpsub\n");
  }
}
print @founds;

myとかは略した

0255nobodyさん2006/07/05(水) 21:45:05ID:???
てかさ、チェックしようとしてる配列に書き戻すとかありえんだろ
0256 ◆TWARamEjuA NGNG
(´-`).。oO(subject.txtの再構築をしたいのかな?それだったらdatを全部舐めてタイトルを取得した方がよさそうな。。。)
0257nobodyさん2006/07/05(水) 21:48:29ID:???
>>234
ttp://kasamatusan.sakura.ne.jp/cgi-bin2/src/ichi42797.txt.html
234のをさらにooっぽくしてみました・・・

当の205はまだ解決してないのかなw?
0258nobodyさん2006/07/05(水) 21:54:53ID:???
いやしばらく見てなかったらすごいことになってますね。
久しぶりにくらくら来ました。
0259nobodyさん2006/07/05(水) 21:59:23ID:???
テ、テポドン2...
0260nobodyさん2006/07/05(水) 22:15:12ID:???
テポ丼2イイネェ
0261nobodyさん2006/07/05(水) 22:16:17ID:DDQKgTGL
ファイルがあるかないかをif条件に入れて、ないなら作成したいです。
ファイル名はcontak.lolです。
cgi-binフォルダにあるかないかを調べたいです。

globを使うんですか?
なんか混乱しちゃって。
0262nobodyさんNGNG
if(-f "./contak.lol"){ }
0263nobodyさん2006/07/05(水) 22:31:31ID:???
レースコンディションで死にそうだなw
0264nobodyさん2006/07/05(水) 22:36:23ID:???
-e じゃなくて?
0265nobodyさん2006/07/05(水) 23:19:27ID:???
レースコンディション調べた。
へええ、そうか、ファイルロックと同じように攻撃されるわけかw

結局 perl では安全にファイルを作ったり読んだりするのはどう書けばいいのだろう?
File モジュール使えって? そりゃそうですが。
0266nobodyさん2006/07/05(水) 23:23:45ID:???
sysopenでO_EXCL使えば?
0267nobodyさん2006/07/05(水) 23:59:55ID:???
>>266
use Fcntl; しなくても動くならそうしたい (´・ω・`)
0268nobodyさん2006/07/06(木) 00:02:49ID:???
O_EXCLなんて&O_EXCL()なんだから環境依存のマジックナンバー化してしまえば(ry
0269nobodyさん2006/07/06(木) 00:32:42ID:???
>>268
そうか、君頭イイネ。
・・・
わかるか!ヽ( `Д´)ノ
0270nobodyさん2006/07/06(木) 00:44:34ID:???
'>>'で開けばなければ作るよ。

ファイルを作ったのが自分かどうかはわからないが。
0271nobodyさん2006/07/06(木) 00:59:56ID:FMcswvIH
perlどころかプログラム超初心者で困ってます。

バッチ処理(これはなんとか解決)を実行後に、元のHPでリンクされた
urlを新しいブラウザで開きたいのですが記述方法がわかりません。
どう記述すれば良いのでしょうか?

つまらない質問ですがよろしくお願い致します。m(__)m
0272nobodyさん2006/07/06(木) 01:26:41ID:???
日本語の初心者は
0273nobodyさん2006/07/06(木) 01:30:44ID:???
まず日本語を勉強してください^^
0274nobodyさん2006/07/06(木) 02:13:42ID:???
perl初心者です。
perlって、サーバで動きますよね。
自分のパソコンで動かそうと思ったら、
apache,activeperlとかインストールしないとだめです。

ここで質問ですが、exeファイルみたいなので、
activeperl無しで動かすことってできるんでしょうか?

perlでアプリケーション作ったら、
apacheとactiveperlもいっしょに入れて、
自分でインストールしてください。
ということになるんでしょうか?

たとえば、チャットのクライアントソフトなど
作るときってどうなりますか。
よろしくお願いします。
■ このスレッドは過去ログ倉庫に格納されています