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

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

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

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

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

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

過去ログやお勧めサイトは >>2-10
0558nobodyさん2006/07/15(土) 19:19:39ID:???
>>557


>#乱数の作成
>$rand1 = int(rand(10));

を

$rand1 = int(rand(10)) + 1;

と末尾に+1しろ。
0559nobodyさん2006/07/15(土) 19:25:01ID:???
今の、このスレの空気は以下の成分からなってます。
1). 自力でつくってんだったら協力したるのに
2). 向うの掲示板に問い合わせろよ



3). KENT かよ!
0560nobodyさん2006/07/15(土) 19:41:55ID:???
>>559
だいたい合ってるwwwww

&code; とか気持ち悪いな。暗黙に &code(@_); と渡されることを知ってての諸行かな。
せめて &code(); とかにしてほしいなあ。
0561nobodyさん2006/07/15(土) 19:48:58ID:???
>>558
ありがとうございます。
文法的にも間違っていたようです。

>>559
すべてではないですが大半は作りましたが・・・・・。
0562nobodyさん2006/07/15(土) 19:53:50ID:???
たいはん 【大半】
全体の半分以上。過半。大部分。副詞的にも用いる。

へぇ・・・。
0563nobodyさん2006/07/15(土) 19:55:13ID:???
>>560

>せめて &code(); とかにしてほしいなあ。

wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
と釣られてみるテスト
0564nobodyさん2006/07/15(土) 20:04:58ID:???
>>561
ほんとかどうか知らんが、おれは KENT であろうとなかろうと問い合わせ先が記入されてるソースに関してのレスは
つけんぞ。

おまえさんがさきに「この部分が自作です」といえば
話は別になるときもあるが。
0565nobodyさん2006/07/15(土) 20:06:20ID:???
改行忘れorz...
0566nobodyさん2006/07/15(土) 20:38:18ID:???
KENTもう配布やめてくれないかな。
ダメな子が増えて困る。
0567nobodyさん2006/07/15(土) 20:45:33ID:???
KENT便利だな

少なくともチャント動くし
0568nobodyさん2006/07/15(土) 21:34:29ID:???
× チャント動く
○ 動きはする
0569nobodyさん2006/07/15(土) 21:59:01ID:???
KENT使ったこと無い
0570nobodyさん2006/07/15(土) 22:15:52ID:???
KENTしか使っていない。
0571nobodyさん2006/07/15(土) 23:50:29ID:???
KENTの何がいいかって、セキュリティとか全然考えてないとこだよな。
攻撃できまくり☆(ゝω・)v
0572nobodyさん2006/07/16(日) 00:07:06ID:???
terra大先生の遺作がまだアチコチに残っている。
外部から任意コマンド実行可能なまま。
0573nobodyさん2006/07/16(日) 06:07:21ID:???
えーw どんな設計したらそんなことになるんだろw
0574nobodyさん2006/07/16(日) 13:59:39ID:pJTY6Rn5
正規表現でマッチした方の値を取る方法が分かりません。
例えば
$hoge = '2743AB5837C9849';
というような文字列があるとして
$hoge =~ s/\D//g;
とした場合に\Dに該当する方(ABC)の値を取りたいんですが
どうすれば良いんでしょうか?
0575nobodyさん2006/07/16(日) 14:07:23ID:???
>574
$&
05765742006/07/16(日) 14:21:08ID:pJTY6Rn5
>>575
ありがとうございます。
マッチ変数というのがあるんですね。

ttp://www.rfs.jp/sb/perl/02/09.html
>後方参照の変数には上記のほかに、マッチ変数 $& $` $' $+ があります。これらの変数を使うと
>プログラム内のすべての正規表現の処理が遅くなるので、注意して使ってください。

という記述があったんですが、できることなら使わない方が良い代物なんでしょうか。
それとも多用がいけないのであって、1、2箇所であれば問題ないんでしょうか。
0577 ◆TWARamEjuA NGNG
違う変数に入れちゃっても良いような。
($hage = $hoge) =~ s/\D//g;
0578nobodyさん2006/07/16(日) 14:48:17ID:???
>>576
> という記述があったんですが、できることなら使わない方が良い代物なんでしょうか。
> それとも多用がいけないのであって、1、2箇所であれば問題ないんでしょうか。
1回でも使っている箇所があると、全ての正規表現が遅くなる。
マッチ変数が使われているかどうか調べるためのモジュールはDevel::SawAmpersand
0579nobodyさん2006/07/16(日) 14:56:43ID:pJTY6Rn5
>>577-588
ありがとうございます。
ちょっと落雷がヤバイので一旦PCの電源落とします。
落ち着いたらそのときまたレスします。すみません。
0580nobodyさん2006/07/16(日) 15:07:17ID:???
速度気になるんだったら、
my @hit = () ;
push @hit, $1 while $hoge =~ s/(¥D)// ;
みたく $1 を使えば?
つーか $& 使ったことないなあ。オレ。
0581nobodyさん2006/07/16(日) 15:54:56ID:???
$1使ったほうが遅いはず
0582nobodyさん2006/07/16(日) 16:08:19ID:???
誰かベンチとってkt
0583bench 魔2006/07/16(日) 16:56:41ID:???
お前がやれよ!まあ、暇だからやったけどさ。
===そーす===
my $str1 = 'a' x 6 . 'hoge' ;
$str1 = $str1 x 100 ;
sub test1(){ my ( $tmp, @hoge ) = $str1 ; push @hoge, $& while $tmp =~ s/hoge// ; }
sub test2(){ my ( $tmp, @hoge ) = $str1 ; push @hoge, $1 while $tmp =~ s/(hoge)// ; }

#timethese 10000, { test2 => 'test2' } ;
timethese 10000, { test1 => 'test1', test2 => 'test2' } ;
===実行結果===
1. ソース内に $& 蟻
Benchmark: timing 10000 iterations of test, test2...
test: 13 wallclock secs (13.22 usr + 0.10 sys = 13.32 CPU) @ 750.75/s (n=10000)
test2: 14 wallclock secs (13.34 usr + 0.10 sys = 13.44 CPU) @ 744.05/s (n=10000)

2. ソース内に $& なし(test1 をコメントアウト
Benchmark: timing 10000 iterations of test2...
test2: 14 wallclock secs (13.32 usr + 0.10 sys = 13.42 CPU) @ 745.16/s (n=10000)
0584bench 魔2006/07/16(日) 16:57:32ID:???
$& だけじゃ差が出ないのか?と思い、
==========
で、test1 を以下の様に変えて
sub test1(){
 my ( $tmp, @hoge, @fuga, @piyo ) = $str1 ;
  ( push (@hoge, $& ),
   push (@fuga, $`),
   push(@piyo, $' )) while $tmp =~ s/hoge// ; }

実行してみたが…
Benchmark: timing 10000 iterations of test, test2...
test: 26 wallclock secs (24.80 usr + 0.22 sys = 25.02 CPU) @ 399.68/s (n=10000)
test2: 14 wallclock secs (13.28 usr + 0.08 sys = 13.36 CPU) @ 748.50/s (n=10000)
test2 の結果は余りかわらず。

prelre にまで書いてある記載だから $& とか使ったら遅くなるケースが必ずある筈なんだけどなあ。
実際のソースで自分で確かめるしかねーな。
0585nobodyさん2006/07/16(日) 17:10:42ID:???
>>583-584
文句言いながらやる君が好きだ。

でも、
> これらの変数を使うとプログラム内のすべての正規表現の処理が遅くなるので、注意して使ってください
だから、同じ時に計測すると $1 の方も遅くなっちゃうんじゃないのかな?
比較じゃなくて構わないから、参考に単独での速度を計ってみてくれるといいかも。

できれば
> @hoges = $hoge =~ /\D/g;
系と
> push @hoges, $1 while $hoge =~ /(\D)/g ;
系とでも比較してあるとなお。
0586bench 魔2006/07/16(日) 17:51:19ID:???
>だから、同じ時に計測すると $1 の方も遅くなっちゃうんじゃないのかな?
>比較じゃなくて構わないから、参考に単独での速度を計ってみてくれるといいかも。
583 の 2.の条件が $& を排除した形のものデス。
$& の入っている行をすべてコメントアウトしました。

お約束「あなたの為にやるんじゃないんだからね!!」
>>583 のソースに
sub cont (){ my ( $tmp, @hoge ) = $str1 ; @hoge = $tmp =~ /hoge/g ;}
を加えて実行 ( 実行名 cont )。実行回数は 5 万回に変更
Benchmark: timing 50000 iterations of cont, test1, test2...
cont: 49 wallclock secs (48.24 usr + 0.34 sys = 48.58 CPU) @ 1029.23/s (n=50000)
test1: 67 wallclock secs (65.77 usr + 0.39 sys = 66.16 CPU) @ 755.74/s (n=50000)
test2: 69 wallclock secs (66.33 usr + 0.53 sys = 66.86 CPU) @ 747.83/s (n=50000)

そこから $& が入った部分を全削除して実行
Benchmark: timing 50000 iterations of cont, test2...
cont: 44 wallclock secs (42.59 usr + 0.33 sys = 42.92 CPU) @ 1164.96/s (n=50000)
test2: 69 wallclock secs (66.67 usr + 0.54 sys = 67.21 CPU) @ 743.94/s (n=50000)

…なるほど、test2 ( $1 を利用 )にはもともとコストが掛ってて $& の影響が表われなかった
だけか。
一箇所の正規表現だけだと、$1 より $& を使った方が速いがソース全体だと影響を及ぼす
という妥当な結果かな。

0587nobodyさん2006/07/16(日) 18:23:45ID:???
>>586
オツカレ!

つまり $& を使うとそもそも結果を伴う $1 の処理には影響ないけど、
普通の正規表現も結果をとることになるから総合的に遅くなる、ってわけだな。

結局、>>574の場合、一番早いのは

my @matchs = $hoge =~ /\D/g;
$hoge =~ s/\D//g; # ※より早い形→ $hoge =~ tr/0-9//cd;

って2段階で処理して $& も $1 も使わない形なんだろね。
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
■ このスレッドは過去ログ倉庫に格納されています