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

【Perl】初心者コーナーPart9

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

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

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

参考書籍はこちら【【Perl,CGI】参考書籍 第2版 】
http://pc.2ch.net/test/read.cgi/php/988809842/
CGIの質問はこちら【CGIだけど、なんか質問ある?part5】
http://pc.2ch.net/test/read.cgi/php/1009331505/
その他の雑多な話題は、【CGIに依存しないPerlの話題一般】
http://pc.2ch.net/test/read.cgi/php/991313362/

過去ログ、その他の役立ち情報は>>2-10を見よう。
0713名無しさん@お腹いっぱい。02/02/11 22:10ID:???
150ぐらいの単語をいっきに表示させたいんですけど,配列をforeachでまわすのと,
配列へ入れずにファイルをwhileでまわすのとどっちが効率いいんでしょう?
0714名無しさん@お腹いっぱい。02/02/11 22:52ID:???
>>713
効率というのはメモリ効率なのか処理効率なのか分からないが
この場合は(単語1つ1つが膨大なサイズでなければ)
前者の方がメモリを喰らうけど速いなり。

もっとも、1・2回の繰り返しじゃ体感できるような差はないと思われ。
0715名無しさん@お腹いっぱい。02/02/11 23:04ID:???
>714
レスサンクスです。参考になりました。
実はチャットの名前の色のリストなんですね。たいした量じゃないです。(笑
0716名無しさん@お腹いっぱい。02/02/11 23:05ID:???
dbmopen(%FOO, foo, 0666);

for(0..$bar){
@data = split(/\0/, $all_data[$_]);

unless(defined($FOO{$data[0]})){
print"処理:新データとして書き込み";
}else{
print"処理:旧データと一部差し替え";
}
}

print"最終処理"

dbmclose(%FOO);

ソケットで得た複数のデータ(名前、所属、個人番号、等)を、
$FOO{個人番号}に収めて管理するプログラムを作っています。
データは正しく受け取れて、一通りの動きはしてくれるのですが、
なぜか最終処理の部分まで到達してくれません。
不思議な事に、ローカル環境(Win2000+Apache、Win98+Apache)では最終処理まで到達します。
解決方法をご存知でしたらご教授いただければ幸いです。
0717名無しさん@お腹いっぱい。02/02/11 23:14ID:???
>>716
print"最終処理"
; が最後に抜けているとか?
\nないからバッファリングのデータ(最終処理)が吐き出されないとか?
0718名無しさん@お腹いっぱい。02/02/11 23:16ID:???
>>716
野暮だが・・・
Perl5ならdbmopenじゃなくtie使ったほうが良いよ。
0719名無しさん@お腹いっぱい。02/02/11 23:17ID:???
>>716
Socket扱うならバッファリングは行わないのが吉。
$| = 1;
0720名無しさん@お腹いっぱい。02/02/11 23:18ID:rEaHJsWI
>>712
値にアクセスする時 $hoge[$i] になって遅くなる。

とラクダに書いてある。w

continue { $i++ }
とかはどうかな。。あんま変わらんか。
072170702/02/11 23:53ID:???
>>720
ラクダ見たけど、遅くなるなんてどの辺に書いて有るんでせうか。
>>712
そういうことで、改めてラクダ読んだら、第2章のforeachの説明
のところで、明確にforeach中で、要素の番号を知る方法は無い
と書かれていました。で、隣り合った要素を比較するなどの場合
は、>>712の方法が一つの解として紹介されており、ラクダを良く
読まねばと思う、今日この頃。
072272002/02/12 00:14ID:ed1xHjmG
>>721
たぶん同じページやでw
ラクダ第2版日本語のp.114、
> また、こちらのほうが高速なのは〜〜〜アクセスできるからだ。
って奴。
そういうことはちゃんと読んでから言えw
072372002/02/12 00:15ID:???
あ、次のページだったねw
0724707(721)02/02/12 00:37ID:???
>>722,723
納得
0725たま02/02/12 00:37ID:/NrbiZO4
1. 画像アップロードとコメントをつけてHTMLページを作成したい。
2. http://digit.que.ne.jp/work/mtWiki/yukiwiki.cgi/yukiwiki.cgi?mycmd=read&mypage=%5B%5BCGI%3A%3ALite%5D%5DのCGI LITEと、cgi-lib.plを利用した
3. READShort と出た。
CGILITEを使って画像のアップと、コメントの送信をするにはどうしたらよろしいかお教えください
0726名無しさん@お腹いっぱい。02/02/12 00:41ID:???
>>725

perldoc CGI_Lite
0727 02/02/12 01:38ID:???
%Link = ('1'->'www.yahoo.com', '2'->'www.google.com');
%Link = ('2'->'www.google.com', '1'->'www.yahoo.com');

while(($Name,$Addr) = each %Link){
  print qq( [ <A href="$Addr">$Name</A> ]);
}

で出力が同じなのはなぜスか?
リストのほうで並び替えても出力(並び方)が変わらんのだが・・・

いい書き方あれば教えてください。
0728名無しさん@お腹いっぱい。02/02/12 01:41ID:???
ハッシュは取り出す順番がバラバラ、、
って前もどっかに書かれてたな、、
sort key %Link にするか、どっかのモジュール(名前忘れ)使うかどっちかがいいと思われ。
072972702/02/12 02:01ID:???
>728
フム,sort key %Link のほうを調べてみます。
ありがとう!
0730名無しさん@お腹いっぱい。02/02/12 02:05ID:???
ああそうか,実際は'1','2'じゃないからsortじゃ工夫せんと無理だな〜
'1_藍上尾', '2_柿苦毛子'にしてwhileでまわして,表示する直前に'1_'を消すとかか。

うーむ,めんどいな。
0731名無しさん@お腹いっぱい。02/02/12 02:06ID:???
>>727

-> ではなく =>

> どっかのモジュール
Tie::IxHash
0732agege02/02/12 02:49ID:???
> 728-729
key ⇒ keys

1_, 2_ などのキーをソートしたいなら、sort {$a <=> $b} %Link だけど、
必ず数値+_形式のキーが来ると決まっているのなら、末尾の_を取り除いて
普通の配列にしてもいいネー。
0733名無しさん@お腹いっぱい。02/02/12 03:18ID:???
全然気付かんかったw < =>,keys
ちなみに
>>732
sort { $a <=> $b } keys %Link
0734名無しさん@お腹いっぱい。02/02/12 03:23ID:???
みんな眠いから凡ミス?
0735名無しさん@お腹いっぱい。02/02/12 04:49ID:???
どっかのスレッドにActivePerlを使ってて、
CGItempXXXXというファイルが残るって書いたものですが、
解決いたしました。
0736名無しさん@お腹いっぱい。02/02/12 05:49ID:PUJwyJrl
>735
よかったねー。
なんかいい方法あったの?
0737名無しさん@お腹いっぱい。02/02/12 06:37ID:???
>>735
>どっかのスレッドに
書き逃げでもしたの?
>解決いたしました。
解決方法も書き込めば、ログ読んだ他の人も助かるかもよ。
0738名無しさん@お腹いっぱい。02/02/12 12:02ID:???
>>727
そのままだとひとつのサイトに対して
「ハッシュのkey」と「ハッシュのvalue」の
2つづつしか要素を持てないから
いっそのこと
%site = (id => 1, url => 'www.google.com', name => 'Google', comment => '便利!');
みたいな形式にしちゃって
push(@list, \%site);
していってそれをソートして表示してみるっていうのはどう?

foreach $this (sort {$a->{name} cmp $b->{name}} @list) {
print $this->{id}.'<a href="'.$this->{url}.'">'.$this->{name}.'</a>'.$this->{comment};
}

これならひとつのサイトに対していくらでも要素を持てるし、
ソートもID順とかURL順とかいろいろできるからいっそう便利かなーと。
0739print<<"EOF";02/02/12 15:27ID:sXZ1u4GK
Perlでヒアドキュメントって嫌われているんですか?
0740名無しさん@お腹いっぱい。02/02/12 16:23ID:???
>>739
何故?普通にバリバリ使いまくってますが。
0741名無しさん@お腹いっぱい。02/02/12 16:25ID:???
>>739
多分ヒアドキュメントを書くときソース中でインデントできない
とかいうやつですか?
先頭のインデントを出力する前に正規化で削除すれば綺麗になる
し、ソース中の見栄えもよくなるからよろしいかと思われ
てかまったく関係なかったらゴメソ
0742名無しさん@お腹いっぱい。02/02/12 16:59ID:???
確かにインデントしてないヒアドキュメントは読みにくいかも。
自分の場合はキレイにしないでそのまま(\t付きのまま)出力してるけど、、
クックブックの24ページにのってるね。<正規
0743print<<"EOF"; 02/02/12 21:39ID:???
>>740-742
レスありがとうです。
そうです、>>741さんの言うとおりインデント出来ないのが…。
と思ってたら、やっぱり回避策があったんですね。
頑張って自己満足なソースの美化に尽くします(笑)
あ、そうだ。ベンチマークでもとってみるか。ヒアドキュメントの。意味ないけど。
0744名無しさん@お腹いっぱい。02/02/12 22:10ID:???
>>743
>あ、そうだ。ベンチマークでもとってみるか。ヒアドキュメントの。意味ないけど。
そういう心がけが上達の道だと思ったり。何となくだけど。
料理本以外にもEffective Perlは個人的にはお薦めなんでご覧あれ。
0745名無しさん@お腹いっぱい。02/02/13 07:36ID:u18sBL1T
ヒアドキュメントでインデント、どうやれば出来るんでしょう。
数時間検索したけど見付けられず…。
どなたか解説、お願い出来ないでしょうか。
0746名無しさん@お腹いっぱい。02/02/13 08:08ID:???
($hoge = <<_HERE_) =~ s/^\s+//mg;
...
_HERE_
074774502/02/13 09:47ID:???
>>746
/igsoe位しか修飾子つかったことが無かったのですが、
/m 文字列を複数行として扱う、はこう使うものなんですね。
勉強になります。ありがとうございました。
0748名無しさん@お腹いっぱい。02/02/13 15:02ID:???
関係ないが、どっかのPHP本でPERLはヒアドキュメント中で
変数を展開できないとか書いてあって、鬱。
こういうもんなんすかね、一応プロフェッショナルブックとか
名うってあったんですが(藁
0749名無しさん@お腹いっぱい。02/02/13 15:25ID:???
>748
酷い本だな。
0750名無しさん@お腹いっぱい。02/02/13 16:02ID:???
ちとおしえてください。
HTMLファイル内の記述で、.cgiファイルを起動させたいのですが、
どうしたらいいですか?<img src=xxx.cgi> だと、HTMLに画像跡がでるし。
お願いします。
0751名無しさん@お腹いっぱい。02/02/13 16:15ID:???
イメタグで1x1の透過gif出力するとか
0752名無しさん@お腹いっぱい。02/02/13 16:22ID:???
>751
ありがとうございます。消えたました。
imgタグで起動してるか心配だけど試してみます。
0753名無しさん@お腹いっぱい。02/02/13 18:11ID:KS70lsn0
$temp = int( 18.9 * 100 );

で,$temp = 1889 になったんだけどなんで?
ActivePerl 5.6.1.630
0754名無しさん@お腹いっぱい。02/02/13 19:12ID:???
>>753
18.9を2進法に変換してみると分かると思われ。
0755名無しさん@お腹いっぱい。02/02/13 20:38ID:???
>>753
ま、可能な限り不自然にならないように、いろいろ苦労してるんですよ。
0756名無しさん@お腹いっぱい。02/02/13 21:34ID:xqc5dBTw
>>754-755
やっぱり,分からん
もう,泣きそう
0757名無しさん@お腹いっぱい。02/02/13 22:46ID:???
>>756
>>755の言っている事をもっと穿って考えよう。(w
ホントだよ?
0758名無しさん@お腹いっぱい。02/02/13 22:49ID:???
>>756
簡単に言うと「Perlは人と同じように数値を理解しているわけではない」ってこと。
これは仕様なんで注意して扱うしかない。

どうしても高精度な計算がしたいならモジュールを使う事。

#!/usr/bin/perl
use Math::BigFloat;

my $num = new Math::BIgFloat('18.9');
print int($num * 100);
__END__
0759名無しさん@お腹いっぱい。02/02/13 22:51ID:???
っと、一文字間違えた

<my $num = new Math::BIgFloat('18.9');
>my $num = new Math::BigFloat('18.9');
0760名無しさん@お腹いっぱい。02/02/13 22:54ID:???
>>758
「難しく」言うと、どのような理屈になるのでしょうか?
できるだけ付いてこられるように頑張ります。
0761名無しさん@お腹いっぱい。02/02/13 23:10ID:???
>>760
とりあえず、Perlが数値を表現するのに確保しているメモリの量では、
18.9を正確に表現することは出来ない、ってことです。

これ以上詳しく言うと長くなりすぎるんで「浮動小数点 内部表現」とか「浮動小数点 フォーマット」
とかで検索すると多分ずらずら出ます。
(でも大抵はその仕様について書かれてるだけなんでイメージしづらいんだよな)

076275302/02/13 23:23ID:???
>>761
精度(?)云々というのはなんとなく頭の片隅にはあるんだけど
 int( 18.9 * 10 )=189
 int( 18.9 * 100 )=1889
 int( 18.9 * 1000 )=18900
なんで,*100 の時だけ?というのが腑に落ちないんだな,これが
0763名無しさん@お腹いっぱい。02/02/13 23:27ID:???
>>762
で、浮動小数点については調べてきたのか?
0764名無しさん@お腹いっぱい。02/02/13 23:30ID:???
>>763
そこはそれ>>755ということ。
具体的に何やってるのかは知らんが、善処した結果なんだろうね。
まぁ俺も妙だとは思う。int()を外すと1890になるのも不可解だし。
0765名無しさん@お腹いっぱい。02/02/13 23:31ID:???
間違い。>>762宛てだった。
0766名無しさん@お腹いっぱい。02/02/13 23:31ID:???
>>764
構造知らずして結果の食い違いは理解できないぞ。
0767名無しさん@お腹いっぱい。02/02/13 23:32ID:???

>>765ということで>>766も忘れてね。
0768名無しさん@お腹いっぱい。02/02/14 02:16ID:???
754の解説をお願いします
0769名無しさん@お腹いっぱい。02/02/14 02:46ID:???
>768
うろ覚えだけど,
2進数では
整数部分は 1, 2, 4, 8, 16, 32, 64...と位が上がっていって
小数部分は 1/2, 1/4, 1/8, 1/16, 1/32...と位取りされている
んじゃなかったかな。
0770名無しさん@お腹いっぱい。02/02/14 08:31ID:???
>>768
調べろ。と言ったはずだが?
勉強しないプログラマに明日はないぞ。

>>769
正解。
0771名無しさん@お腹いっぱい。02/02/14 12:48ID:???
ちなみにprint $nとprint int $nの結果が違う事だが、
Perlのprint()関数は、C言語のprintf()、
またはそれに準ずるフォーマットルーチンを使って実装されていて、
不動小数点数はある桁数(これは自由に設定可能である)で繰り上がる仕様になっている。
この現象は "print 2/3" 等とした時にも見られる。
ところが、int()というのは小数点以下を黙って全て切り捨てる。
これにより、答えが整数であるべき時でも"print int $n"と"print $n"に差が生じる事があるのだ。
0772名無しさん@お腹いっぱい。02/02/14 14:10ID:???
>>762
53bit同士の計算で, 結果の54bit目が1だと切り上げされるからじゃない?

18.9 ≒
10010.111001100110011001100110011001100110011001100110
10 = 1010
100 = 1100100
1000 = 1111101000
10000 = 10011100010000
100000 = 11000011010100000

18.9*10 ≒
10111100.1111111111111111111111111111111111111111111111
->10111101

18.9*100≒
11101100001.1111111111111111111111111111111111111111110

18.9*1000≒
100100111010011.111111111111111111111111111111111111111
->100100111010100

18.9*10000≒
101110001001000111.111111111111111111111111111111111111
->101110001001001000

18.9*100000≒
111001101011011001111.111111111111111111111111111111110
0773名無しさん@お腹いっぱい。02/02/14 14:21ID:+0g/R+F6
Perlでファイルを取り扱うモジュール(というかクラス?)を作ったのですが、ファイルハンドルがインスタンス間で共有されてしまってイマイチ使いづらいです。
同じクラスのインスタンスを複数作った場合、インスタンス間でファイルハンドルを別々に持つようにできますでしょうか?

$file1=new FileClass('read.txt');
$file2=new FileClass('write.txt');

$string=$file1->getLine(1);
$file2->insert($string);

$file1->close();
$file2->close();

みたいな。
ファイルハンドルに参照とか無名配列みたいのがあれば自分で解決できそうだけど聞いたこと無いので。
0774名無しさん@お腹いっぱい。02/02/14 14:23ID:X8oQt8gz
perlで、あるhtmlファイルから、見出しタグ(<Hn>ほげ</Hn>)とその中身だけを書き出したいんですが、
どうすればいいのでしょう・・・。
(結果として、以下のようになる)

<h1>ああ</h1>
<h2>いい</h2>
<h3>うう</h3>
<h2>いい</h2>
0775名無しさん@お腹いっぱい。02/02/14 14:34ID:0AhamLLI
print $1 if m|(<([hH][1-6])[^>]*>[^<]*</\1>)|o;
077677402/02/14 16:11ID:peM7yPQ9
どうもです>>775
でも、
$filename = "test.html";
open(IN, $filename) || die "$filename: $!";
open(OUT,">result.html") || die "result.html: $!";

while(<IN>){
chomp:
print OUT $1 if m|(<([hH][1-6])[^>]*>[^<]*</\1>)|o;
}

close(IN);
close(OUT);

で、結果が0k。。。。なぜ?
test.htmlの中身は、以下の通り

aaaa<H2>えいちに</H2>bbb

<h1>えいちわん</h1>
077777402/02/14 16:18ID:peM7yPQ9
もとい、chomp:でなくchomp;としてます。
0778名無しさん@お腹いっぱい。02/02/14 16:21ID:???
>>773
使用法なんてどうでも良いから実装を見せろよ。
多分 "open HANDLE" とかしてるんだろうけど。
とりあえず標準ライブラリの Symbol と IO::Handle および IO::File のソースを読めば幸せになれるかもな。

関係ないが、クラスの名前に"Class"をつけるのはアホらしいと思うのは俺だけか。
0779名無しさん@お腹いっぱい。02/02/14 16:35ID:???
print $1 if m|(<[hH]([1-6])[^>]*>[^<]*</[hH]\2>)|o;
としてみたらいけた。()のネストってこうなるのか。
078077302/02/14 17:07ID:???
>>778
非常にありがd。ついでにスマソ。
で、ご指摘どおりsymbolを読んで、とりあえず幸せになれた。
ファイルハンドルにスカラー変数が使えるとは。

クラスの名前にClassなんて、いつもは付けてないけど今回は念のため。
0781名無しさん@お腹いっぱい。02/02/14 22:58ID:oPnLkVh5
すっごい初歩な質問でスマソなんだけど
掲示板で書きこみ者の任意の回数だけ要素(例えばアイコンとか)を
繰り返し表示させるスクリプトを組み多淫です。
うんこのアイコンを選んで「10」とエリアに入れてpostしたら
うんこアイコンが10個出る、見たいな感じで。

この繰り返させるスクリプトの書き方がわからんのです
どなたかわかる方いたら教えてください。
0782名無しさん@お腹いっぱい。02/02/14 23:33ID:7pMXJhas
多淫。
0783名無しさん@お腹いっぱい。02/02/14 23:38ID:???
多淫だな。
0784名無しさん@お腹いっぱい。02/02/14 23:40ID:???
どうすればいいんですか?
を変換しようとするとき
どうすれ売淫ですか
になって、よく困るな。そういえば。
こういうことやるから、また売淫ででるな。
0785名無しさん@お腹いっぱい。02/02/14 23:44ID:???
>>781
アイコン<select name="icon">
回数<input name="kaisu">
-------------------
for (1..$in{'kaisu'}) {
$icon.="<img src=$in{'icon'}>";
}
-------------------
0786名無しさん@お腹いっぱい。02/02/14 23:56ID:???
>785
こんな基本的なコードでも人のコードは勉強になる。
なるほど,すごくシンプルだ。おれなら"i="云々書いてるとこだった。
0787名無しさん@お腹いっぱい。02/02/15 00:04ID:???
$icon = qq{<img src="$in{'icon'}">} x $in{'kaisu'};
078878102/02/15 00:55ID:LCJ4YCpt
>>785
>>787
THANXです!
今スクリプトをこねくり回してますがうまいこといかないです。
成功したら完成形を報告します。うー…
0789名無しさん@お腹いっぱい。02/02/15 06:20ID:WCBRMEef
どうも
0790名無しさん@お腹いっぱい。02/02/15 06:20ID:oL67ZYlw
ごば、、
0791名無しさん@お腹いっぱい。02/02/15 06:30ID:???
>>多淫
汚染チェックと上限チェックを忘れないようにな。頑張れ。
0792賛成の反対の反対ナノだ!02/02/15 06:30ID:???
> <img src="$in{'icon'}">
>
$in{'icon'}の値が「xxx.gif" onLoad="JavaScript:ウケケ」に書き替え
られて送信されてきたらどうする?チェックはキッチリやっておこうネ!
そうしないとセキュリティホールになったりして。
0793名無しさん@お腹いっぱい。02/02/15 13:10ID:???
>792
とほほみたいなこと言うなよ・・・
079402/02/15 16:07ID:???

したらばの「管理人メニュー」に意味不明のものがありました。
FAQにも書いてありませんでしたし、
サポート掲示板に書いても反応がありませんのでこちらでお願いします。

>Getによる投稿を認める

Getってなんですか?

0795名無しさん@お腹いっぱい。02/02/15 16:19ID:???
>>793
まじで大切だと思うけど。
0796名無しさん@お腹いっぱい。02/02/15 16:47ID:???
>>794
CGI側:データ受け取りに環境変数を使うか標準入力を使うか。
ブラウザ/サーバ側:HTTP0.9でも動くか否か。
0797名無しさん@お腹いっぱい。02/02/15 16:59ID:???
>794
だからなGETだと,「<A href="http://www.aaaa.com/boke.cgi?name=荒らしだよ〜ん&naiyou=死ね死ね死ね">僕のホームページはここです!</A>」なんてことができるってこと。
そのかわり「boke.cgi?Logview」とかアドレスで直接モードへの移行はできなくなる。
まぁPOSTにしとけ。
0798名無しさん@お腹いっぱい。02/02/15 17:20ID:???
ファイルハンドルにスカラーを使うとき、printで出力するときはどうするのでしょう。
open(FILE,'>text.txt')
print FILE 'abcd';
close FILE;
の代わりに
$file=1;
open($file,'text.txt');
print $file 'abcd';
close($file);
とやるとprintで死ぬのですが。<>でくくってもだめだったです。
0799名無しさん@お腹いっぱい。02/02/15 17:22ID:???
>>793
セキュリティホールに気を配るのは基本だと思われ
0800名無しさん@お腹いっぱい。02/02/15 18:04ID:???
くだらない質問かも知れないけど、@a[1]と($a[1])って等価?
ちょっと気になったもので。
0801名無しさん@お腹いっぱい。02/02/15 18:12ID:???
>>800
@a[1]は有効か?
0802名無しさん@お腹いっぱい。02/02/15 18:13ID:???
>798
「1」はダメだろ。
0803名無しさん@お腹いっぱい。02/02/15 18:17ID:???
ファイルロックって書き込む時だけすればいいの?
読む時もロックしといたほうがいい?
0804名無しさん@お腹いっぱい。02/02/15 18:17ID:???
>>803
読み込んでる最中にロックされると困りませんか?
080579802/02/15 18:19ID:???
>>802
中身のないスカラーはFH代わりに使えないけど、なにか代入したら使えましたよ。
もっとも、私は標準ライブラリsymbolの
$sym = gensym;
open($sym, "filename");
のgensymの意味がわからないのでテケトーにやってみた、というだけの話ですけど…。
まぁ、モジュール化とかの理由で通常のファイルハンドルが使えない状況なので無理にスカラーをば。
で、1じゃだめですか?
0806名無しさん@お腹いっぱい。02/02/15 19:17ID:???
>804
なるほど。つまりやめとけって意味ですか?

レスの意味はよく考えたんだがちょっと想像できない・・・。
人が読み込んでるときに自分が読み込めないのは無駄で遅くなる原因になるっぽいけど・・・
0807名無しさん@お腹いっぱい。02/02/15 19:33ID:u5RDXGaq
$file=1;
open($file,'text.txt');
print $file 'abcd';
close($file);

これは、やっていることは以下といっしょ。

open(1,'text.txt');
print 1 'abcd';
close(1);

よって、君がいう「通常のファイルハンドル」となんら代わり無い。

そんなことより、open($file ,'> text.txt') でしたという落ちはなしにしてくれ。
0808名無しさん@お腹いっぱい。02/02/15 20:14ID:???
>>800
@hoge[] はスライス、($hoge[])はスカラーが一個のリスト。

>>803
読むときもファイルロックすべき。
読むときにロックしないで、読んでる最中にいきなりロックかけられたら困るでしょ?
>>804の答えはそういうこと。
> 人が読み込んでるときに自分が読み込めない
いいえ、これはLOCK_EXでなくLOCK_SHを使えばいいだけの事。
この辺り、過去ログでJAPUさんが詳しく述べているとこあり。
過去ログ閲覧をお勧めする。
0809名無しさん@お腹いっぱい。02/02/15 20:34ID:???
>808
2ちゃんねるの過去ログなんて、これほどあさりにくいものはないっすよ
横やり失敬しました(笑)
081080002/02/15 23:15ID:???
>>808
あ、それはわかるんですけど、
実際使う上で違いがあるのかどうかを聞きたかったんです(^^;
0811名無しさん@お腹いっぱい。02/02/15 23:19ID:???
>>810
あ る に 決 ま っ て る だ ろ !
0812名無しさん@お腹いっぱい。02/02/16 01:38ID:???
ランキングで困っています。
2_45_5_74
4_36_3_53
8_83_2_27
こんな感じのデータがある時、12_45_5_74 の 
1番目の12と3番目の5を足してその値を大きい順に
並ばせるにはどうしたらいいでしょうか?

データを開いて、whileで各、足していって、
データ保存

保存したデータを大きい順に並べていって、
データ保存 

こんな感じを感じを考えているのですが、
一つにまとめる方法とかありますか?

おねがいします。
■ このスレッドは過去ログ倉庫に格納されています