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

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

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

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

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

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

過去ログやお勧めサイトは >>2-10
05885742006/07/16(日) 19:11:43ID:pJTY6Rn5
レス遅くなってすみません。

>>577
一度別の変数に逃がしておいて、そっちの方で再度逆のパターンで取得する、
という理解で良いんでしょうか。参考にしてみます。
括弧でくくって逃がしておく方法は知らなかったので勉強になりました。

>>578
マッチ変数は1箇所でも使うと他の全ての正規表現にも影響が出るんですね。
今のところ使ってる箇所はないんで、できたら使わない方向で考えてみます。

>>580>>581
速度も気になりますが、「注意して使ってください」の文言に
ちょっとビビってしまいました。でも、他にも正規表現使ってる箇所があるので
できたらマッチ変数使わなくても良いのならそっちの方が良いと思っています。

>>583-584>>586
画に描いたようなツンデレと詳しいベンチマークありがとうございました。
局所的にはマッチ変数よりも$1使った方が処理は速いけれど
他にも正規表現使ってる箇所があれば、結果は逆になるということですね。
コード内で他にもいくつか正規表現使ってるところがあるので
マッチ変数を使わなくてはならない状況になれば$1を代用することにします。
非常に勉強になりました。

>>587
正規表現の置換と言えば即sでやってたので
trに特有の便利な修飾子があるのを見落としていました。
ずばりの解答も含めてありがとうございました。

レスくださった皆さん、ありがとうございました。
最近あちこちで落雷が発生しているみたいなのでパソコンの方もご自愛下さい。
0589nobodyさん2006/07/16(日) 19:42:51ID:???
誰かアンチKENTの方々、コレが最高という掲示板配布サイトなどを教えて下さいな。
by KENT信者
0590nobodyさん2006/07/16(日) 19:44:18ID:???
はいはい釣り釣り
0591nobodyさん2006/07/16(日) 22:04:02ID:???
入力された文字を展開して表示させる方法ってあります?
たとえば ^\d$ と入力すると

0
1
2
3
4
5
6
7
8
9

と展開するみたいな
0592nobodyさん2006/07/16(日) 22:16:57ID:???
ない
0593nobodyさん2006/07/16(日) 22:32:38ID:???
質問の意図が読めない
正規表現の展開?
05945912006/07/16(日) 22:41:09ID:???
>>593
展開して表示する方法があるのかどうかです

^\d$なら>>591の通り0〜9まで展開
^[Aa]$ならAとaの2つ展開
という意味です



0595nobodyさん2006/07/16(日) 22:52:27ID:???
[^a] とかの場合はどんな展開を想定してんだ?
できないってことでいいよ。
0596nobodyさん2006/07/16(日) 22:56:17ID:???
知らないのかw


0597nobodyさん2006/07/16(日) 22:56:40ID:???
残念ながら知らないw
>>592のいう通りじゃない?
簡単な正規表現だったら、頭の中で想像つくし、
複雑なものだったら、展開後の文字が何万行にも
わたってしまうから...

単純な例だと「/./」。
これの展開は 1byte で表されるものすべてだから、
多byte文字とか考えたらガクガクブルブルw
05985932006/07/16(日) 22:59:52ID:???
>>597>>591に対してのレス
0599nobodyさん2006/07/16(日) 23:01:02ID:???
my $p = qr/^\d$/;
my @c = grep { $_ = chr($_); /$p/ } (0..0xFF);
0600nobodyさん2006/07/16(日) 23:34:52ID:???
パソコンに入っているcsvファイルAを読み込んでデータを取り出して処理、
そしてサーバ上にあらかじめ用意してあるファイルBにその結果を書き出す、
ということをやりたいんですが、そういうことは可能でしょうか?
0601nobodyさん2006/07/16(日) 23:36:49ID:???
>>600
要約するとこういうことです。

CSVファイルをアップロードして、処理した結果を保存する。

結論。可能
06026002006/07/16(日) 23:42:33ID:???
>>601
なるほど。とすると簡単な流れとしては
csvファイルAをサーバにアップロード
→オープンして処理
→ファイルBに書き込む
→ファイルA削除
という解釈で大丈夫でしょうか?
0603nobodyさん2006/07/16(日) 23:48:10ID:???
no
06045912006/07/17(月) 00:05:10ID:???
>>599
ありがとうございます
06055912006/07/17(月) 00:09:38ID:???
>>602
もっといい方法があるかもしれないけど
csvファイルAからGrep→ファイルBに書き込む
でいけるような
0606nobodyさん2006/07/17(月) 00:19:41ID:???
>>604
え、それでいいの?
シングルバイト、1文字限定なら、最初に言ってよ。
0607nobodyさん2006/07/17(月) 00:25:28ID:???
>>602
search.cpan.org にいって
NET::FTP とか NET::SSH::PERL とか
そっちがわ系のモジュールを検討してみたら?
0608nobodyさん2006/07/17(月) 00:31:41ID:???
>>606
ほんとだよなw
06096002006/07/17(月) 00:46:22ID:???
602の流れでとりあえず書いてみようと思ったんですが
ファイルAをアップロード→オープン
のところで、おそらくアップロードが完了する前に
オープンをかけてしまいエラーが出てしまいます。
アップロードとファイルBへの書き込み処理は
別々にしないと無理ですかね・・・。

>>603
喜び勇んで早速書き始めてたらいきなり否定されてたとは・・・

>>605
grepを使うにしても、まずはサーバ上にファイルAを上げないとダメですよね?

>>606
そういうモジュールがあるんですか。
調べてみます。
0610nobodyさん2006/07/17(月) 00:51:38ID:???
>>609
そんなこたあないはず。
心配だったら sleep(1) でもしてみたらいいじゃない。
06115912006/07/17(月) 00:59:20ID:???
>>606>>608
ああああ、>>599はシングルバイト限定なんですね・・・
2バイト以上だとやっぱり無理?
0612nobodyさん2006/07/17(月) 01:06:13ID:???
気づいてなかったのかw
0613nobodyさん2006/07/17(月) 01:06:32ID:???
>>611
パターンなんて無限大にあるしなあ。
/.../ これだけ展開するので 255*255*255 だろw
もっと条件言うか何がしたいか言うかしないと 「無理」 って感じ。
06146002006/07/17(月) 01:08:17ID:???
>>610
単に処理のコードが間違ってるだけでした・・・
一応602の流れでやりたいことはできました。
0615nobodyさんNGNG
                  般若波羅蜜多心経

           観自在菩薩行深般若波羅蜜多時照見五
           蘊皆空度一切苦厄舎利子色不異空空不
           異色色即是空空即是色受想行識亦復如
           是舎利子是諸法空相不生不滅不垢不浄
           不増不減是故空中無色無受想行識無眼
           耳鼻舌身意無色聲香味觸法無眼界乃至
           無意識界無無明亦無無明尽乃至無老死
           亦無老死尽無苦集滅道無智亦無得以無
           所得故菩提薩垂依般若波羅蜜多故心無
           罫礙無罫礙故無有恐怖遠離一切顛倒夢
           想究竟涅槃三世諸仏依般若波羅蜜多故
           得阿耨多羅三藐三菩提故知般若波羅蜜
           多是大神咒是大明咒是無上咒是無等等
           咒能除一切苦真実不虚故説般若波羅蜜
           多咒即説咒曰
           羯諦羯諦波羅羯諦波羅僧羯諦菩提薩婆訶

                 般若心経

仏説摩訶般若波羅蜜多心経観自在菩薩行深般若波羅蜜多時照見五蘊皆空度一
切苦厄舎利子色不異空空不異色色即是空空即是色受想行識亦復如是舎利子是
諸法空相不生不滅不垢不浄不増不減是故空中無色無受想行識無眼耳鼻舌身意
無色声香味触法無眼界乃至無意識界無無明亦無無明尽乃至無老死亦無老死尽
無苦集滅道無智亦無得以無所得故菩提薩捶依般若波羅蜜多故心無罫礙無罫礙
故無有恐怖遠離一切顛倒夢想究竟涅槃三世諸仏依般若波羅蜜多故得阿耨多羅
三貌三菩提故知般若波羅蜜多是大神呪是大明呪是無上呪是無等等呪能除一切
苦真実不虚故説般若波羅蜜多呪即説呪曰羯諦羯諦波羅羯諦波羅僧羯諦菩提薩
婆訶般若心経
06166072006/07/17(月) 01:10:00ID:???
>>609
適当にぐぐっただけなので、中身は知らんよ。
ただ、ftp, ssh 系のモジュールは、cpan に結構ある
から、その中に役立つものはあるかも。
0617nobodyさん2006/07/17(月) 01:11:22ID:???
>>591
昔ム板のPerlスレで似たようなお題が出たのを思い出した。

Perlについての質問箱 21箱目
ttp://pc8.2ch.net/test/read.cgi/tech/1134327348/478-
ミラー
ttp://makimo.to/2ch/pc8_tech/1134/1134327348.html#478

で、こんなのが紹介されている。
ttp://search.cpan.org/~bowmanbs/Regexp-Genex-0.06/lib/Regexp/Genex.pm
読んで試してみたらどうも\d等の文字クラスが含まれていると、
ランダムにしか出てこないみたいだけど参考まで。
06186002006/07/17(月) 01:21:32ID:???
>>616
FTPと似たようなことができるみたいなので
よく分からない状態で用いるのは、
セキュリティ上危険な気がしました。
ご忠告ありがとうございました。
0619nobodyさん2006/07/17(月) 05:25:24ID:AcPhLonl
膨大なスクリプト内のいろんなところにexitが置いてあるコードはスパゲッティと考えていいですか?
0620nobodyさん2006/07/17(月) 06:08:57ID:???
(´・ω・`)モキュ?
0621nobodyさん2006/07/17(月) 07:11:29ID:???
>>619
mod_perlでも動かすのかな?
それより、local宣言だらけを心配した方がいいよ。
逆に、my宣言が全然ないとか。
0622nobodyさん2006/07/17(月) 10:19:25ID:???
>>619
exitの飛び先は明確だし、フローがでたらめな訳でもないから、違う。
0623nobodyさん2006/07/17(月) 11:23:26ID:???
>>618
> FTPと似たようなことができるみたいなので
> よく分からない状態で用いるのは、
> セキュリティ上危険な気がしました。

「FTPと似たようなこと」をやろうとしてるんじゃなかったのか。
にほんごってむずかしーね。
0624nobodyさん2006/07/17(月) 12:15:35ID:???
それを実行するには「ftpと似たような事」をしなければ出来ないと
いう事に思い至らなかっただけでしょ。
0625nobodyさん2006/07/17(月) 14:29:03ID:???
>>600
何悩んでるか知らないけど、アプロダ参考にすればいいんじゃないの?
0626nobodyさん2006/07/17(月) 16:03:52ID:???
FTPつかわずに、どうやってアップロードしてるんだろう?
http?
0627nobodyさん2006/07/17(月) 16:31:38ID:???
64**9を計算すると
1.8014398509482e+016
ってなるけど実数表示させるにはどうすりゃいいのん?
0628nobodyさん2006/07/17(月) 16:33:45ID:???
>>627
5.8以上ならuse bigint;
それ以前を考慮するならMath::BigIntを直接使う
0629nobodyさん2006/07/17(月) 16:47:46ID:???
>>628
おおそんなのがあったのか
ありがd
0630nobodyさん2006/07/17(月) 16:51:55ID:???
>>628
スマソ、”Math::BigIntを直接使う”
直接使う?
0631nobodyさん2006/07/17(月) 17:13:50ID:???
>>630
perldoc bigint を見れば分かるけど、
> "bigint" is just a thin wrapper around various modules of the Math::BigInt family.
0632nobodyさん2006/07/17(月) 22:48:16ID:???
>>631
英語読めない
0633nobodyさん2006/07/17(月) 22:53:09ID:???
"bigint"は Math::BigInt 関連のモジュールの単なる小さなラッパーです。
0634nobodyさん2006/07/17(月) 22:57:20ID:???
>632
消防はもう寝な
0635nobodyさん2006/07/17(月) 23:00:55ID:???
>>627
> 1.8014398509482e+016
実数表示してるじゃん。という突っ込みは誰もしないの?
0636nobodyさん2006/07/17(月) 23:01:54ID:???
>>632
お前の次のセリフは 「ラッパーって何?」 だ
0637nobodyさん2006/07/17(月) 23:05:15ID:???
>>636
ラッパーってあのラッパーですか?
0638nobodyさん2006/07/17(月) 23:21:32ID:???
DAYONE
0639nobodyさん2006/07/17(月) 23:36:11ID:???
>>628
5.8.8でuse bigint;したけど64**9は>>627みたいになったぞ?
0640nobodyさん2006/07/17(月) 23:43:04ID:???
>perl -e "printf '%.0f', 64**9"
18014398509481984

こうですか? わかりません><
0641nobodyさん2006/07/17(月) 23:45:16ID:???
printfでもできるのか
0642nobodyさん2006/07/18(火) 00:11:32ID:???
>>639
user@localhost:~$ perl -Mbigint -e 'print 64**9, "\n"'
18014398509481984
user@localhost:~$ perl -v | grep v5
This is perl, v5.8.8 built for i486-linux-gnu-thread-multi
0643nobodyさん2006/07/18(火) 00:24:40ID:DXYFSpfL
教えてください
このような表記は許されるのでしょうか?

1)$TEST[100]に代入されている文字列を表示させたい
2)$TEST[***]<-ここに$A[1]を入れたい

$A[1]=100;
$TEST[100]='TEST';
print $TEST[ $A[1] ];

やはり・・・
$A[1]=100;
$TEST[100]='TEST';
$B=$A[1];
print $TEST[$B];

なのかなあ
0644nobodyさん2006/07/18(火) 00:40:05ID:???
>>643
>print $TEST[ $A[1] ];
全然これで構わない。何もおかしくない。
06456432006/07/18(火) 00:46:23ID:DXYFSpfL
644さん、ありがとうございます。

ソース記述が途中で間違っていたのかも知れなかったです。
この表記がまちがっていると思い込んで2時間位悩んでいましたm(_ _)m
0646nobodyさん2006/07/18(火) 00:52:26ID:???
それより大文字の変数名やめないかw
0647nobodyさん2006/07/18(火) 01:00:06ID:???
BASICを思い出す
0648nobodyさん2006/07/18(火) 02:34:41ID:???
>639
5.8.4 だけど、use bigint で 18014398509481984 って結果でたよ

>643
大文字は定数で使われるのがほとんどなので、変数は小文字でどぞ。
0649nobodyさん2006/07/18(火) 03:41:25ID:???
すいませんアドバイスおねがいします

1.(2/3)*(2/3) の解を 4/9 にするにはどうすればいいですか?
2.次に1.の解を 1/2.25 (分子を1)にするにはどうすればよいですか?
0650nobodyさん2006/07/18(火) 03:50:18ID:RAKThs0C
CGIでクッキーかきました。保存されてるのを確認したのですが、
$ENV{'HTTP_COOKIE'}で何も取得できません!
作成直後ではなくて、ブラウザでリクエストを再送しても取得できません。
どんな原因が考えられましょうか!
0651nobodyさん2006/07/18(火) 04:54:13ID:???
>>649
>>628と同様に、bigrat or Math::BigRatでどうよ。
2はライブラリ任せにしないで、算数的に出力時にdenominatorをnumeratorで割れば?
0652nobodyさん2006/07/18(火) 05:24:58ID:???
>>649
use bigrat;
$a = (2/3)*(7/57);
print $a,"\n";
printf( "1/%f",1/$a);

%fのところはうまくいじらないと思い通りの出力にならないかも?
つーか7/8を1/xと表示したいときxは何になってほしいのか・・・?
0653nobodyさん2006/07/18(火) 05:35:52ID:???
>>650
$ENV{'HTTP_COOKIE'}で何も取得できなくて、
いったい何で”保存されてるのを確認した”のか、教えてください。
パッと思いつく原因としてはクッキーを出してるスクリプト
と受け取ってるスクリプトがあるディレクトリが別になってるとか?
どうやってクッキーを発行して、どうやって受け取ろうとしてるのか、
もっと詳細に報告してください。
06546502006/07/18(火) 09:21:50ID:???
どうもです!確認はクッキーフォルダにクッキーファイルができたことを確認しました。
スクリプトはいっしょで、読み書きするスクリプトをリロードして確認したり、
読みと書きでパラメータを分けて行き来したりしています。
Set-Cookie: session=test;expires=;\n
と書いてます。index.cgi?a=1で書いてindex.cgi?a=2で読んでいます。

宜しくお願いします!
0655nobodyさん2006/07/18(火) 09:28:15ID:???
アドバイスよろしくお願いします。

現在作ってるスクリプトで設定内容などは
$config = {
'test' => "テスト"
}
sub get{
my $pkg = shift;
my $hash = $config;
bless $config, $pkg;
}
my($cfg) = config->get();
print $cfg->{test};
この用にして設定内容を取得してます。
そして今回、$config の中に配列へのリファレンスを含めるようになり

@urls = (ずらずら〜っと);

と URL が書かれた配列へのリファレンスを

$config = {
'urls' => \@urls,
}

として $config へ設定しました。
この際に $cfg で値を取得する書き方としては

@{$cfg->{'urls'}}

で正解なのでしょうか?
もっときれいな書き方や 「こっちのほうが解釈としては正解じゃね?」 みたいな
書き方があれば教えていただければ幸いです。
0656nobodyさん2006/07/18(火) 10:10:41ID:???
>>655
おk
0657nobodyさん2006/07/18(火) 10:19:23ID:???
なんで設定をオブジェクトにしてるのか不明だけど、書き方はおk
0658nobodyさん2006/07/18(火) 10:26:39ID:???
設定したつもりの値が得られるという意味では正しいかもしれないが、
perlのoopの使い方がどうみてもむちゃくちゃなので勉強しなおしてください。
変な癖をつけると後で苦労するよ。
0659nobodyさん2006/07/18(火) 10:32:26ID:???
>>655
OOPをやりたいなら
package Config;
sub get{
my $pkg = shift;
my $hash = shift;
bless $hash, $pkg;
}
.....(いろんなメソッド)
package main;
my $cfg = Config->get({'urls'=>\@urls})

そのままだと、sub getが意味ない

>>658
perl oopのいい入門て見たことない希ガス・・・
0660nobodyさん2006/07/18(火) 10:35:44ID:???
レスありがとです
この書きかたでいこうかと思います


>657
以前このスレだかどこかで KENT の様に設定用変数を数多く
用意するのは綺麗じゃないみたいなことがあったときに、
私が
config.pl
%config=('test'=>2);
sub getconfig{return %config;}

my %config=&getconfig();


ってやってるって書いたら効率悪いって言われたもんで、
ちょっと書き直してたらこうなった次第です。
0661nobodyさん2006/07/18(火) 10:35:45ID:???
その get() が、実は new() な所がちょっと…
0662nobodyさん2006/07/18(火) 10:43:45ID:???
ローカルにハッシュをコピってから参照するほうが、その都度
関数コールするよりもオーバーヘッドは少ないかなって思ったので。

数回から数十回のコールでオーバーヘッドを気にするのは無駄
とは分かってはいたんですがやっぱりスマートな書きかたではなかったですか(-_-;
0663nobodyさん2006/07/18(火) 10:46:41ID:???
やっぱ慣例に沿った(newしてからget)方が、自分以外が読む人のためになりますか?
0664nobodyさん2006/07/18(火) 10:52:28ID:???
>>650
print "content-type: text/html\n";
print "Set-Cookie: session=test\n";
print "\n";
print $ENV{HTTP_COOKIE};
とりあえずうちの環境だと、これを2回読み込むと画面にsession=test
と出るので、それでだめだったら環境がおかしい
0665nobodyさん2006/07/18(火) 12:38:15ID:???
できました!ありがとうございます。
Set-cookie:〜\nContent-type:〜\n\nってなってたのをクッキーとContent-typeの順番を入れ替えただけで
行けたっぽいです。書き込み時がおかしかったようです。
ネットで順番はどっちでもいいようなことを見たし、実際クッキーらしきものが書かれていたのでこれでいいのかと
思ってました。ざっと試しただけですが、これから詳しいことを検証したいと思います。
あと、バグ入りクッキーは本当にクライアント環境によって挙動が違いました。(会社では場合によって読めた)
0666nobodyさん2006/07/18(火) 13:25:28ID:???
Content-type:〜\n\nSet-cookie:〜\n
となっていたに1票
0667nobodyさん2006/07/18(火) 14:04:40ID:???
>>663
ていうか、ただのハッシュとして使うだけなら
なんでオブジェクトにするのか全く不明。
それなら単純にハッシュを宣言して、読み込むだけの方が良い。
0668nobodyさん2006/07/18(火) 14:22:23ID:???
>>665
順番はどうでもいいけど検証するなら空行が何を表すのかってことを検証して下さい。
0669nobodyさん2006/07/18(火) 14:43:02ID:???
空行位置は665に書いたとおりなんで、間違ってないと思うんですよ。
それでも、やはり順序不問ってことは、どっかでケアレスミスしたかもしれません。今夜再検証してみます。
0670nobodyさん2006/07/18(火) 15:15:34ID:???
>667
外部ファイルにhashで設定を書いてrequireすると、
同じ内容の変数が2つ存在することになって無駄があるので
オブジェクトにした次第です。
0671nobodyさん2006/07/18(火) 15:24:45ID:???
>>670
その考え方が間違ってる。そんなことでオブジェクトにしちゃいけない。
だったらまだ、>>660 にある最初の書き方の方が、考えがマトモ。

同じ内容の変数が2つになるのが嫌なら、
外部ファイルの変数を別のハッシュに代入せずに、そのまま使えば良いだけの事。
0672nobodyさん2006/07/18(火) 15:28:41ID:???
ifで(unlessを使わずに)「特定の文字列にマッチしなければ」という条件式を
書くにはどうしたら良いんでしょうか?
単純に
if($data !=~ /MOJI/)
という書き方では反映されないみたいなんですが。
0673nobodyさん2006/07/18(火) 15:31:12ID:???
!~
0674nobodyさん2006/07/18(火) 15:31:47ID:S5V5gxsh
比較の質問なんですが
「○○かつ△△」を文字列で扱う方法はやはりないのでしょうか?

$type1 = 'BAKA';
$type2 = 'KASU';
if ( $type1 eq 'BAKA' and $type2 eq 'KASU')

みたいにするには数値をそれぞれ代入してからやるべきなのでしょうか?
0675nobodyさん2006/07/18(火) 15:34:06ID:???
>>670
リファレンスを使えば二重にならない。
0676nobodyさん2006/07/18(火) 15:38:45ID:???
質問の意味が分からない
06776722006/07/18(火) 15:39:57ID:???
>>673
if($data =!~ /MOJI/)
と書いてみましたがエラーが出て動かないです。
どこが間違っているんでしょうか?

>>674
単純に
if ( ( $type1 eq 'BAKA' ) && ( $type2 eq 'KASU' ) )
で良いじゃないでしょうか。
0678nobodyさん2006/07/18(火) 15:42:18ID:???
if ($data !~ /MOJI/)
06796722006/07/18(火) 15:46:52ID:???
>>678
できました。
=とか!とかはあくまでチルダに対して付いてたんですね。
ありがとうございました。
0680nobodyさん2006/07/18(火) 15:47:11ID:S5V5gxsh
>>676
数値比較では && や and を使えますが
文字列でも同じように && や and を使っていいのかどうかということです
0681nobodyさん2006/07/18(火) 15:47:29ID:???
Perlの本て、読まないのかな。
最近の質問見てるとネットだけで独学の人が多いような気がする。
0682nobodyさん2006/07/18(火) 15:48:55ID:???
>>680
and や && は比較の内容と関係ない。
だから当然使って良い。
0683nobodyさん2006/07/18(火) 15:49:31ID:S5V5gxsh
>>677
どうもです

>>682
ありがとうございます
0684nobodyさん2006/07/18(火) 16:01:37ID:???
perldocの存在を知らない気がする
0685nobodyさん2006/07/18(火) 17:42:03ID:???
>675
その都度デリファレンスするのって、見た目が余り綺麗じゃないからその案は
以前考えてるときに却下しました。
0686nobodyさん2006/07/18(火) 17:51:43ID:???
>>685
誰がデリファレンスしろと…。

>>675 が言ってるのは、
外部ファイルで %config を定義して、return ¥%config; でリファレンスを返せば
同じハッシュが2つにならないということでしょう。
使う時は $cfg->{'hoge'} みたいなので良いんだし。デリファレンス要らない。
0687nobodyさん2006/07/18(火) 18:24:24ID:???
OOP考えるならさあ、、
「とりあえず外部PL(PM)ファイルに設定をずらずらして require」 じゃなくて、
普通の(TXT)ファイルとかにCSVとかTSVみたいな感じで設定を書いて、
my $cfg1 = Config->new('config1.txt');
my $cfg2 = Config->new('config2.txt');
みたいな感じで設定取ってくるもんじゃないの?
>>655みたいに値を得たいときは my @url = $cfg1->get('url'); とかしてさ。
そうじゃないならOOPの意味もないな、って思うんだけどw
■ このスレッドは過去ログ倉庫に格納されています