トップページ⇒php
984コメント309KB

【Perl】初心者コーナーPart11

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

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

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

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

過去ログ、その他の役立ち情報は>>2-10を見よう。
0111nobodyさん02/04/01 13:55ID:???
<form action=test.cgi method=post>
<input type=hidden name=mode value=plus>
<input type=submit value="追加">
</form>

<form action=test.cgi method=post>
<input type=hidden name=mode value=delete>
<input type=submit value="削除">
</form>

011210802/04/01 15:19ID:wV1XGpKY
HTMLじゃなくても良いんですけど
他のサイトのデータを読むにはどうすれば良いんでしょうか?
i-modeでソースを見たいんですけど。。。
011310802/04/01 15:38ID:???
socket使うのか。。。
勉強しなおしてきまふ。
0114nobodyさん02/04/01 16:46ID:???
質問!
perlってマインスイーパーとかペイントみたいな
アプリケーションって作れるの?
どうなの?おせーて★
0115 ◆Googlexo 02/04/01 16:52ID:???
>114
・・・・・。ネタですか?
0116sato02/04/01 17:01ID:???
>>114
それはJavaの仕事。
0117nobodyさん02/04/01 17:05ID:???
>>114
Perlだから○○はつくれない、ってことはないぞ。
得手不得手はあるにしても。
頑張ればマインスイーパーでもなんでも作れるさ。
0118nobodyさん02/04/01 17:06ID:???
>>114
できますが、何か?
オライリーの『実用Perlプログラミング』にはテトリスの例があがってるよ。
0119nobodyさん02/04/01 17:48ID:???
>>116
Javaなんて大がかりなもの持ち出すまでもない。

http://turedure.s8.xrea.com/yourmine/index.html
0120nobodyさん02/04/02 05:14ID:???
すいません、ファイル内容を全て $_ に入れた後、一行ずつ
スマートに処理をするには、どうすればいいのでしょうか?
一応以下のを考えましたが、m// って遅いしメモリ食うんですよね?

local $_ = '';
while (!eof(STDIN)) { $_ .= STDIN }
&func($_);

sub func {
 local $_ = shift;
 while (m/^(.*?\n)(.*)$/) {
  $_ = $2;
  print $1; # ここら辺にしたい処理を入れる予定
 }
 return 1;
}

他には local @_ = split(/\n/, $_); なども考えましたが、
一瞬だけメモリが二倍要りますし・・・。
あ、サブルーチンには @_ では無く $_ で渡したいのです。
0121nobodyさん02/04/02 06:15ID:???
>>120
local $_ = '';

個人的には「例のあれ」をプログラマが制御するのには賛同しかねる。

0122nobodyさん02/04/02 07:35ID:???
>>120
ファイル全部読み込んでメモリも何も無いと思う。
敢えてやるならwhileとm//gかなあ。

$/ = '';
func(<STDIN>);

sub func {
    local $_ = shift;
    print $1 while /(.*\n)/g;
    # ↑処理
}

まあ、ネタなんだろうけど。
0123nobodyさん02/04/02 10:03ID:???
>120
ネタかな?とも思ったが、一応「初心者スレ」なんで...
どうして変数$_ にファイル内容をすべていれた後に改まって1行ずつ処理をするのかわかりませんが、
結局、メモリをくわないようにファイル処理したいのならば以下のように正攻法でいくのがベターかと。
open(READ, 'filepath');
while (<READ>){
    やりたい処理 if /pattern/;
}

あと、「m// って遅いしメモリ食うんですよね?」とありますが、そんなことはありません。
特に先頭マッチ(m/^pattern/)や後方マッチ(m/pattern$/)は高速だし、1バイト文字に
マッチさせたいのならindex関数を使うほうが高速です。これは結局、処理内容に応じて
最適の処理を模索していくしかないと思いますが、それでもより高速化をもとめるのならば
C的な言語にシフトせざるを得ません。

0124nobodyさん02/04/02 13:32ID:YZpqqRq/
ファイルを何度もopenしていて、
何回かに一回openに失敗してしまうなんて事はあるのですか?
0125nobodyさん02/04/02 13:38ID:vQkiGH9y
どっかで閉じ忘れてるとか?
openとcloseの数は合ってますか?
012612402/04/02 13:52ID:PEBO6o/o
>>125
すいません。open失敗したわけではないのですが
そういう場合てあるのかな〜?と思ったので。
0127Dream ★02/04/02 13:54ID:???
>>124
特殊な場合にはあるよ。
ファイルハンドルに使われるメモリが足りなくなったときとか。
012812402/04/02 14:08ID:PEBO6o/o
>>127
>ファイルハンドルに使われるメモリが足りなくなったときとか。
こういう場合があるんですね。なるほど。
けど、こんなサーバ使ってられん!てレベルの話ですよね?
レスありがとございます。
0129nobodyさん02/04/02 14:09ID:aIwf9lEF
dumperで出力したファイルを、取り込みたいですけど、

ソース中に、
my $ref = {
'a' => 1,
'b' => 2
};

こんな感じで初期できますけど、これを、
ファイルにして、そのファイルから

open ( FILE , "<ファイル" ) ;
my $ref = <FILE> ;
close ( FILE ) ;

こんな感じで取り込みたいんです。
(このソースじゃ駄目でしたけど・・・)

どなたか、ご存知でしたら、ご教授ください。
0130nobodyさん02/04/02 14:11ID:???
>129
require "ファイル";
じゃダメなのか?
013112902/04/02 14:24ID:aIwf9lEF
>>130
なるほど!
盲点でした。
ありがとう御座います。
013212902/04/02 14:27ID:aIwf9lEF
すいません、またお願いします。
無名リストのに名前を付けれたと、記憶しているのですが、
その記述方法を忘れてしまいました。

$VAR1 = {
'x' => 1,
'y' => 2
};
dumperの結果ですが、変数が$VAR1になってしまうのですが、
これを変えたいのです。
以上よろしくお願いいたします。
0133nobodyさん02/04/02 15:26ID:YZpqqRq/
大量の分をprintで出力する場合
print <<"EOF";
〜〜大量〜〜
EOF
で出力すると〜〜大量〜〜の分をまとめてメモリに格納しちゃうんですか?
それとも一行づつ処理して
print "〜〜〜";
print "〜〜〜";
print "〜〜〜";
と同じになるのですか?
0134Dream ★02/04/02 16:05ID:???
>>133
メモリに格納する。メモリが不安なら、
$|=1;
とか使えばいいんじゃなかったかな?
0135☆02/04/02 16:15ID:???
バナーを表示した回数とクリックした回数を
テキストに書き出したいんですが、
バナー複数ある場合テキストの中に
$banner, $bannertitle, $url, $hyoujikaisu, $clickkaisu
という風に書き出したいです。

バナー表示回数とクリック回数を
どのように記述すればいいか是非教えて下さい。
0136nobodyさん02/04/02 16:24ID:???
>>135
そのまんまでいいんじゃない?
まさか、ルーチン書いてくれって事?
0137nobodyさん02/04/02 16:39ID:???
>>132=129
ドキュメントに書いてあることいちいち聞くなよ。Dumper.pm読んでくれんと、コロ助
0138☆02/04/02 16:39ID:???
>.>136
表示回数カウントの方法と、
クリック回数カウントの方法です。
0139nobodyさん02/04/02 17:40ID:BrKRPiRd
>>134
レスありがとうです。
出力をバッファリングしなくなるのでprint文の
実行と同時に出力してくれるようになる。というやつですね。

これでいちいちメモリに格納しないで直接?出力する。イコール

print <<"EOF";
〜〜大量〜〜
EOF

でも

print "〜〜〜";
print "〜〜〜";

でも同じになるのでしょうか?

0140nobodyさん02/04/02 18:24ID:???
sub new
{
my $class = shift ;
my ( $filename ) = @_ ;

print "##### $ARGV[ 0 ]\n" ;

my $self = {} ;
bless $self ;
}

クラスのメソッドから、グローバル?の変数参照すんのどうすんの?
0141nobodyさん02/04/02 18:25ID:???
>>139
効率よく入出力するためのバッファリングなので、あまり気にしすぎない方がいいよ。

手元にある環境で試したけど、標準出力に対し、cygwin版Perlは行バッファリングされていたけど、
ActivePerlはバッファリングされていなかった。
いずれにせよ、STDOUTに対しては完全バッファリングはしてないんちゃうかな?
よくわかんらんけど。
0142nobodyさん02/04/02 18:36ID:???
>140
main::でアクセスすれば? 行儀悪いと言われるだろうがね。
014314002/04/02 18:56ID:???
>>142
すまんけど、その時の記述例をちょろと、お願い。
0144nobodyさん02/04/02 18:57ID:???
$package::var
014514002/04/02 18:58ID:???
>>143
すまそん。
main::$ARGV[ 0 ]
で、できた。
014612902/04/02 19:24ID:aIwf9lEF
無名リストに名前を付ける方法を何方か、ご存知ありませんでしょうか、
記述例など、頂けると助かります。
よろしくお願いします。
0147nobodyさん02/04/02 19:27ID:???
>>146
無名なんだから名前なんてあるわけねーだろ。
014812902/04/02 19:37ID:aIwf9lEF
そうでしたか、

では、Dumperで、無名リストを表示する場合、
名前を付ける方法ご存知の型は、居られませんでしょうか、
よろしくお願いします。

>>147
レスありがとう御座います。
ただ、申し訳ありませんが、今後、私の発言に干渉なさらないよう、
お願い申し上げます。
0149nobodyさん02/04/02 19:43ID:???
>>139
$|=1するしないにかかわらず、
その両者は同じです。
0150nobodyさん02/04/02 19:51ID:???
Dumper.pmの中に書いてあるっていってんだろ、ボケ。
氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね
氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね
015114702/04/02 20:44ID:???
>>148
的外れで意味不明な質問をしておきながらそのデカい態度。
見上げたもんだな。
その厨っぷりに感心したから教えてやろう。

Data::Dumper->new([ ref-list ], [ name-list ]);

e.g.
print Data::Dumper->Dump([ \%HASH ], [ 'HASH' ]);
print Data::Dumper->Dump([ \%HASH ], [ '*HASH' ]);
015212902/04/02 21:19ID:aIwf9lEF
>>150
>>151
レスありがとう御座います。
ただ、申し訳ありませんが、今後、私の発言に干渉なさらないよう、
お願い申し上げます。

引き続き、ご存知の方宜しくお願いします。
0153nobodyさん02/04/02 21:56ID:???
>>152

$Data::Dumper::Varname="manco";
print Dumper($manco) ;
これじゃだめ?

ttp://www.xav.com/perl/lib/Data/Dumper.html
このあたり参考になるかも
015413902/04/02 21:58ID:wv3Og9zk
>>141>>149
ご丁寧にどうもありがとです。
けど、なんか混乱状態に陥ってます。。。
>>139の両者ともサーバへの負担はかわらずという事ですかね?
0155nobodyさん02/04/02 22:20ID:???
コンパイル時にその辺は最適化してるんとちゃうかなぁ。
015612002/04/02 22:36ID:???
こういうのはネタと言われる程常識外れなのですね。
ソース公開したりして無くて・・・というか、ずっと以前に
公開してた事ありましたが、直ぐに中止してよかった (笑

>>121
m// や s/// 等が続いて switch 分作る時に良くやります。
が、玄人さんは使いたがらないらしいですね。
私は初心者ですのであまり理由がわかりませんが。

>>122-123
自分はまだ「どうにかプログラムを書ける」位のレベルですので、
やっと関数・処理の切り分け、流用・設計を考慮し出したトコなのです。
main ではデータの流れだけを担当し、細かい処理は各関数に
任せた結果が例の処理でした。
で、各関数には @ で渡さず $ で統一したかった、という感じ。

やっぱり >>123 のようなのがやり方が一般的ですよね。
そうすると、便利な関数にはなるのですが、酷いと main 一個だけの
プログラムにもなりかねないので・・・もっと精進します。
有難う御座いました。
015712902/04/02 23:35ID:???
>>153
レスありがとう御座います。助かりました。
URLも参考になりました。
とりあえず、このような形で解決できました。
ありがとうございました。

$aa->{ 'aa' } = 'aa' ;
$Data::Dumper::Terse = 1 ;
print '$aaa = ' . Dumper( $aa ) ;

結果:
$aaa = {
aa => "aa"
}
0158nobodyさん02/04/03 00:09ID:???
package manco ;
$manco='manco';

こんなふうにして、staitc?な変数置きたいんだけど、
駄目?
015915802/04/03 00:18ID:???
>>158
use strict ;
してたからだた
でも、どして?
0160nobodyさん02/04/03 00:24ID:???
>>159
ourしる
016115802/04/03 00:56ID:???
use strict ;
package manco ;
my $manco='manco';
だったぁ〜
0162nobodyさん02/04/03 01:03ID:???
use strict;
package system;
$system::logfile = 'bbs.log';
package main;
my $filename = $system::logfile;

こういう事じゃなくて?
0163nobodyさん02/04/03 01:23ID:???
>161
わざわざそんなことしてなんになるのか?
ただのアホだな! アホのくせに書き込むんじゃねーよ!

0164nobodyさん02/04/03 02:53ID:Hn4nUBfc
cgiファイルの中にアクセス解析のCGIを組み込みたいんですが
そういうのって可能ですか?

例えば、htmlの場合
<html>
<!--#exec cgi="cgi-bin/accesskaiseki/accesskaiseki.cgi"-->
</html>
みたいに記述すればOKですが、同じ文章を
CGIファイルの中に付け足しても無理ですよね。
アホな質問かもしれませんがわかる方いたら教えてください。
0165nobodyさん02/04/03 02:59ID:???
>>156
>やっと関数・処理の切り分け、流用・設計を考慮し出したトコなのです。
>main ではデータの流れだけを担当し、細かい処理は各関数に
>任せた結果が例の処理でした。
>で、各関数には @ で渡さず $ で統一したかった、という感じ。
なるほど、意図が判った。
そういうときは、私はファイル名、もしくはファイルハンドルを関数に渡します。
0166nobodyさん02/04/03 03:19ID:???
>>164
CGIの中から、LWPでアクセス解析CGIをGETするのがいいかな。
0167nobodyさん02/04/03 03:47ID:???
>>164
動いてるそのCGIで解析するべきだと思うが。。。
0168nobody02/04/03 04:15ID:???
>>164
具体的に何のCGIに入れるのか分からないが、
掲示板みたいのなら上の方の設定部分に
$honyarara='<!--#exec cgi="cgi-bin/accesskaiseki/accesskaiseki.cgi"-->\n';
とやっておいてhtml表示部分に
print "$honyarara";
を足す。多分だけどな。
うまく行ったら私の幸せでも祈ってください。
016916602/04/03 04:28ID:???
>>168
少なくとも以前apacheで試した時は、CGI出力に対してSSIは
適用されなかったなり。
017016802/04/03 04:41ID:???
そうでしたか。

しかも間違えてたよ。
$honyarara='<!--#exec cgi="cgi-bin/accesskaiseki/accesskaiseki.cgi"-->';
print "$honyarara\n";
だよ。(鬱
逝ってきます。

164は166の方法が難しいときはSSIでなくCGIのアクセス解析にしてimgタグを上記方法で埋め込んで下さい。
0171nobodyさん02/04/03 11:21ID:???
print $file{ 'fh' } $str ;
こんな感じで、ファイルハンドルをハッシュの中にいれて使おうと思ったんだけど、
うまくいかんかったのだけど、どして?
0172nobodyさん02/04/03 11:28ID:???
最近、煽ってるやついっけど、
そういう奴は、すっこんでろよ。
ここは、【Perl】初心者コーナーだ。
質問する訳でもなく、答える気も無い奴は、
しゃべるなってこった。わかったか?
0173nobodyさん02/04/03 11:41ID:???
>172
初心者に質問の仕方を教えてますがなにか?
まずは質問の仕方を覚えるのが大事。
質問の仕方がわかるようになれば、問題の解決法を調べる方法もわかるようになってくる。
そうすれば他人に聞かずとも自分で調べる事もできるようになるしな。
回答を教えるだけが親切ではない。
0174nobodyさん02/04/03 12:00ID:???
>>173
漏れが、いいたいのはさ、
「そんな事もしらねぇ〜書き込むんじゃねぇ〜よ」
みたいな事いってるのよ、

あんたの、その上から人を見るような、口調は、正直気に入らないが、
教えて欲しい人には、利益になるから、いんじゃねか
0175nobodyさん02/04/03 12:58ID:???
あまり素直に答えて居座られても困ります。
129みたいなのに常駐されると特に厄介だし。
「2:それでこんな風にやってみたが・・・ 」を書いてあると、
間違いを指摘するのが容易で答えやすいのではないでしょうか。
なんの努力もなしに、教えてくれと助けを求める人の中には、
初心者というより、ただ単に頭が悪い人という場合があるので、
適当にあしらってしまうのも理解できます。
FAQのような事はgoogleや適当なWebサイトに誘導するのはアリだと思うし、
調べ方を教えるのが、質問者に対してもっとも利益になると思います。
過度の煽りには賛同しかねますが、
Perlに関する初心者向けの本で解決することを質問されていてはきりがないので、
適度に追い返して欲しいというのが本音です。

と172の煽りに乗ってしまう俺がいる。

ほとんどの方は、努力する姿勢をみせている質問者には、
煽らずに答えてあげていると思います。一部の方は・・・(省略)
172さんのような口調の方がおられると余計に荒れてしまうので、
自身も多少の自粛をお願いします。(気持ちは理解してますけど。)
0176春虫02/04/03 13:18ID:???
@args = split(/&/, $query);
foreach $i (@args) {
($name, $val) = split(/=/, $i);
#$val =~ tr/+/ /;
#$val =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack('C', hex($1))/eg;
#$cgi{$name} = $val;

if ( $name eq 'data1' ){
$data1 = $val;
} elsif ( $name eq 'data2' ){
$data2 = $val;
}
}

これだとフォームが増えるとif〜のがズラズラ増えちゃうよね?
なんかスマ〜トにやるにはどー書いたらいいでしょか?w
0177nobodyさん02/04/03 13:18ID:???
>>171
そういう構文が許されていないから。
0178nobodyさん02/04/03 13:19ID:???
>>176
> どー書いたらいいでしょか?w
幸せそうですね。何か愉快な事でもあったのですか?

0179nobodyさん02/04/03 13:23ID:???
>>176
>$cgi{$name} = $val;
素直に↑を使ったらいいと思うけどダメな理由でもあるの?
018017902/04/03 13:27ID:???
ネタだったのか。まじめに答えてしまった。鬱だ氏脳。さようなら。
0181nobodyさん02/04/03 13:48ID:???
>>177
とりあえず、
print $file{ 'fh' } $str ;
を
$fh = $file{ 'fh' } ;
print $fh $str ;
って対処してはいるんだけど、
なんかスマートじゃないなーって思って質問したんやけど、
これで、あってるのかしら?
0182nobodyさん02/04/03 13:59ID:???
use strict ;
use warnings ;
皆さん使ってます?
0183 02/04/03 15:35ID:7cQZbwjH
Perlはじめたばかりの初心者なのですが
フォームで取得した情報を、テーブル内に表示しようとすると
並び順がめちゃくちゃになってこまっています。これを順番に表示するにはどうしたら
よいでしょうか?

名前 → 本文
メールアドレス → 名前
本文 → メールアドレス

#フォームデータの復元
foreach $pair (split(/&/, $query)) {
($key, $value) = split(/=/, $pair);

# 文字のデコード
$value =~ tr/+/ /;
$value =~ s/%([0-9a-fA-F][0-9a-fA-F])/chr(hex($1))/eg;

$FORM{$key} = $value;
0184nobodyさん02/04/03 16:05ID:???
>>181
>>1から引用
> 1:自分はこう言う事がしたい。
> 2:それでこんな風にやってみたが・・・
> 3:それだとこんなエラーが出て上手く行かなかった。

肝心の「何がしたいか」を書かないでまともな返事を期待するなよ。

アンタのやりたいことは多分これだと思うが。
-- begin code --
print { $file{fh} } $str
-- end code --
0185nobodyさん02/04/03 16:06ID:???
>>183
Hashってのはそういう仕様なんだよ。
順番に表示したきゃsort keys %hashやTie::IxHash、DB_FileのDB_BTREEでも使えや。
018618302/04/03 16:18ID:7cQZbwjH
>>185
どうも有難うございました。そういう仕様なのですね。納得です。
勉強してまた、出直してきます。
0187nobodyさん02/04/03 16:29ID:???
>183
sortを使ってハッシュの中身を整列してから表示するという手もある。
018818302/04/03 16:38ID:???
なるほど〜。sortを使う方法ならできそうですね。
ところで、hash は順番めちゃくちゃに表示っていうのは
毎回ランダムに順番が代わるのでしょうか?それとも何か規則性あるんですか?
018918102/04/03 16:42ID:???
>>184
>肝心の「何がしたいか」を書かないでまともな返事を期待するなよ。
そうだね、申し訳ない。
ありがと
0190nobodyさん02/04/03 16:54ID:???
>>188
順番は変化します。
基本的には恐らくハッシュ値の順とかだろうけど、同じハッシュ値の場合は
格納した順によって変化するはずなので、同じ順番に並ぶことを
期待しない方がいいと思う。
以上適当な解答なので、どうしても気になるならPerlのソースコードでも
見て確かめてください。
ハッシュについてはC言語のアルゴリズムの本をみればよく分かると思う。
0191nobodyさん02/04/03 17:09ID:???
>188
モジュールで整列できる物がある。
・・・以前JAPUさんに教えてもらったのにログが見つからない。(涙
0192 02/04/03 18:02ID:???
掲示板とかで入力された内容を確認画面を1ページはさんで
次のページにデータを渡すには、どうすればいいのでしょうか・・・。

0193nobodyさん02/04/03 18:34ID:???
>192
<input type=hidden〜〜〜>
で渡す。
0194nobodyさん02/04/03 18:39ID:???
確認画面に書き出すリンクのurlを
〜〜.cgi?comment=sage
ってするか、フォームボタン作って
<input type="hidden" name="comment" value="sage">
ってする。もしくはjavascript使って併用することもできる。
あとはクッキー使う方法もある。削除パスワードとか。
019519202/04/03 18:44ID:???
どうも有難うございました!!!!!!!
<input type="hidden" 〜
で解決しました。皆様方に感謝です。
0196nobodyさん02/04/03 21:56ID:???
メソッドから、メンバーのメソッドを呼ぶときの引数について
なんですけど

package test ;
sub new {改行多すぎて省略}

sub a
{
my ( $self ) = shift ;
my ( $str ) = @_ ;
print "$self->{test} ### $str\n" ;
}

sub b
{
my ( $self ) = shift ;
my ( $str ) = @_ ;
# a( $str ) ;
a( $self , $str ) ;
#ここの引数の数と
}

package main ;
my $test = new test() ;
$test->a( "call a" ) ;
#ここの引数の数
$test->b( "call b" ) ;
exit ;

メインから呼ぶとき、
$test->a( "call a" ) ;
だけど、メソッドbから、呼ぶときは、
a( $self , "call a" ) ;
と、なっちゃったんだけど、できれば引数の数が変わるのは、避けたいいんだけど、
これは、言語仕様すか?
それとも、記述の仕方間違ってます?
0197nobodyさん02/04/03 22:05ID:???
>>196
何が言いたいのかよくわからんな。
もう少し纏めてから再度質問されたし。
0198nobodyさん02/04/03 22:16ID:???
メソッドBから呼ぶときは
$self→a("call a");
ってやりなされ。
0199nobodyさん02/04/04 00:06ID:???
>>198
なるほどぉ〜〜〜〜〜〜〜〜!!!
そっかぁ〜、
ありがとう!!!!!!
0200nobodyさん02/04/04 01:44ID:???
>>183
漏れは、
$FORM{$key} = $value;
push(@FORM_ORDER,$key);
てな感じでキーの順序を覚えておいて、
foreach(@FORM_ORDER) {...}
で回すだす。
0201nobodyさん02/04/04 10:04ID:???
フォームのキーの並び順に依存するのは止めた方が…。
0202春虫02/04/04 15:04ID:???
open(TMP, ">$tmp") || &error("$tmpが変!");
print TMP "$no<>$data1<>$data2<>$date\n";

open(DATA,"$file") || &error("$fileが変!");
while (<DATA>) {
print TMP $_;

記事に$noを振りたいんだけど$noを1づつ増やして
いきたいのですが・・・どうも上手くいきません。
Perlの先輩方々よいアドバイスをください・・・

感じとしては$fileの1行目を読み込んで
$noに+1をする感じでいいのでしょうか。。。
0203nobodyさん02/04/04 15:16ID:???
>202
もう少しわかりやすく。
何をやりたいかよくわからない。
020420202/04/04 15:22ID:???
えと・・・

書き込みにNoをつけたいんです;−;
1番目記事,2番目の記事って感じに。
0205nobodyさん02/04/04 15:23ID:???
>>202
どのみちそれじゃ上書きになってるから1個しか表示されないよ。
0206nobodyさん02/04/04 15:25ID:???
>204
ログにナンバーを振るのでなく、表示の際にナンバーを振っていく方がいいと思うが
それじゃダメなのかな?
020720202/04/04 15:35ID:???
LogにNoが欲しいかも・・・
0208誰かもっとスマートな方法教えて02/04/04 16:00ID:???
open(DATA,"$file") || &error("$fileが変!");
open(TMP, ">$tmp") || &error("$tmpが変!");
$tmp = <DATA>;
$tmp =~ /^(\d+)<>/;
print TMP ($1+1) . "<>$data1<>$data2<>$date\n$tmp";
while (<DATA>) {
print TMP $_;
0209nobodyさん02/04/04 16:00ID:???
>>202
http://www.nn.iij4u.or.jp/~nabe/osietekunn.html
君はなかなかの教えてクンだ。
だが今一歩足りないな。

もっと無意味な情報をこれ見よがしに提示し、
自分の考えを捻じ曲げて喚き散らし、
狂ったように答えを催促すれば誰しも認める第一級教えてクンになれるゾ!
021020202/04/04 16:04ID:???
>>209

了解!第一級教えてクンになれるように頑張ります。

では逝って来ます。
■ このスレッドは過去ログ倉庫に格納されています