[表示 : 全て 最新50 1-99 101- 201- 2chのread.cgiへ]
Update time : 05/09 17:29 / Filesize : 66 KB / Number-of Response : 262
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:nobodyさん [2009/02/16(月) 11:42:29 ID:gvPTpodw]
Perlのコーディングで困ってる人のスレです。

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

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

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

お勧めサイトは >2 以降

前スレ pc11.2ch.net/test/read.cgi/php/1218030872/

36 名前:nobodyさん mailto:sage [2009/02/19(木) 17:36:11 ID:???]
あれ、perldocにmy/ourが何を返すか書いてないことないか。

37 名前:nobodyさん mailto:sage [2009/02/19(木) 19:03:07 ID:???]
Win32::Soundの使い方について質問です。
wavファイルを繰返して再生したいのですが

#! perl
use Win32::Sound;
$file = "sound.wav";
Win32::Sound::Play( $file, SND_ASYNC, SND_LOOP);

と書きましたが、音が出ず終了してしまいました。
意図する動作をさせるための書き方を教えてください。

38 名前:nobodyさん mailto:sage [2009/02/19(木) 20:24:56 ID:???]
ourで宣言した変数を、初期化しないで、すぐにmyで宣言した変数に代入するって、そういうのが必要なケースってある?

39 名前:nobodyさん mailto:sage [2009/02/19(木) 20:45:17 ID:???]
同じ事考えたのか、あるいは似たような事かはわからないが、
requireでhashだけ書き込んであるスクリプトを読み込んで、
そのhashを使おうとした時にourで宣言しないと駄目だった気がする。

いちいちデータを整形するのが面倒だから、
hashをそのまま読み込めるようにスクリプトとして直接出力して使った俺も俺だがw
サブルーチンの形で出力してrequireすれば戻り値使えてour使わず済むんじゃない?
そこまでいくと色々な意味で違う気がするがw

40 名前:nobodyさん mailto:sage [2009/02/19(木) 21:02:24 ID:???]
>>37
Win32::Sound::Play($file, SND_ASYNC|SND_LOOP);

41 名前:40 mailto:sage [2009/02/19(木) 21:04:59 ID:???]
>>37
言い忘れた。適当にウェイトかまさないと音が出ないで終了するから注意。

42 名前:nobodyさん mailto:sage [2009/02/19(木) 22:18:51 ID:???]
>>40
どうもです!

43 名前:nobodyさん mailto:sage [2009/02/20(金) 09:00:28 ID:???]
>>39
昔からPerlの定数は無引数のサブルーチンを使うのが普通ですよ。
constantプラグマも中身はそうなってる。

44 名前:nobodyさん mailto:sage [2009/02/20(金) 14:17:51 ID:???]
>>39
データ永続化にはStorable



45 名前:nobodyさん [2009/02/20(金) 15:33:35 ID:vekYyWEG]
300行程度のプログラムを動作させたら、エラー表示が出ずに変数の中身だけが壊れる謎の現象が起きたのですが
そういった事が起こった経験のある方いませんか?
詳しい現象は足し算を5回し50になるはずの計算値が1.02010301020104e+15という数値になります。
プログラムの記述には問題は無いはず。
(エラーの表示はでていない、足し算、引き算以外は用いていない、小数も用いていないのにエラーは少数)。

メモリーエラーとかハード面ではないかと疑っています。

46 名前:nobodyさん mailto:sage [2009/02/20(金) 15:47:47 ID:???]
はいはいコード晒そうね。

47 名前:nobodyさん mailto:sage [2009/02/20(金) 16:09:11 ID:???]
果たしてそれが少数なのか って話だが・・

48 名前:nobodyさん mailto:sage [2009/02/20(金) 16:17:25 ID:???]
>>45
再現性のあるコードを晒してからだな
話にならん

49 名前:nobodyさん [2009/02/20(金) 16:24:13 ID:vekYyWEG]
困った、賞味300行程度あってサイトアドレスなどさらせないものが含まれてて問題の変数にはプログラム全体が関わっています。
一部分を抽出して同じエラーが出たらその部分をさらします。

50 名前:nobodyさん mailto:sage [2009/02/20(金) 16:28:05 ID:???]
晒せないところは伏字にすればいいだろ

51 名前:nobodyさん [2009/02/20(金) 17:01:26 ID:vekYyWEG]
if () {}
if () {}
if () {}

if () {}
elsif () {}
elsif () {}
に変えたら直りました。上記だと2個の条件を同時に満たしたときにバグるようです。
下記だと同時に条件を満たしたとき先に記述された条件のほうを優先するようです。
なぜだかさっぱりわかりません。

52 名前:nobodyさん mailto:sage [2009/02/20(金) 17:03:40 ID:???]

そんなレベルの奴が書いた300行のスクリプト…

53 名前:nobodyさん mailto:sage [2009/02/20(金) 17:18:50 ID:???]
>>52
for next などの繰り返し処理や
サブルーチンの使い方などが良くわからないのでやたら長くなりました

ちなみに賞味300行なので空行を入れて印刷すると15ページになりました。
連動する別のファイルのスクリプトをあわせると30ページ以上になりました。
やっぱりサブルーチンは覚えるべきだとおもいました。

54 名前:nobodyさん mailto:sage [2009/02/20(金) 17:30:01 ID:???]
>>53
本とか買えば?



55 名前:nobodyさん mailto:sage [2009/02/20(金) 17:34:37 ID:???]
>プログラムの記述には問題は無いはず。
こういう自信って何処から来るんだろう。

56 名前:nobodyさん mailto:sage [2009/02/20(金) 17:45:10 ID:???]
「我は全知全能なり」という自己認識

57 名前:nobodyさん mailto:sage [2009/02/20(金) 17:51:45 ID:???]
>>55

単純にエラーの表示が出なかったからです。
>>54
本は難しすぎてよくわかりませんでした。

58 名前:nobodyさん mailto:sage [2009/02/20(金) 17:53:27 ID:???]
>>51
てめぇは本をまず買えよw


if () {}
elsif () {}
else {}



もし 〜 なら {}
そうではなくて、もし 〜 なら {}
そうでなけりゃ {}

ってなって、1つでも TRUE となれば他は評価されません。

if ばかり並べると全てが評価されます。

59 名前:nobodyさん mailto:sage [2009/02/20(金) 18:36:53 ID:???]
「コンパイルが通れば単体試験OK」
を思い出した。

60 名前:nobodyさん mailto:sage [2009/02/20(金) 18:37:19 ID:???]
最初に買うなら、初めてのPerlが一番いいと思う。

61 名前:nobodyさん mailto:sage [2009/02/20(金) 18:42:56 ID:???]
プログラミングをはじめようとしてる人に薦めてるのは

「はじめてのperl」 など、サンプルが載ってるもの
ポケットリファレンス

の2冊を同時に買うように進めてる

ネット見りゃ済むって思うだろうけど、それはよほどやる気の有る奴か
なんでもかんでもググりたいようなやつとか、そういう人種にしか出来ないw

やっぱ始めのうちは 「紙で読むこと」 が重要だと思う

62 名前:51 mailto:sage [2009/02/20(金) 18:46:04 ID:???]
>>58
ありがとう
>>60-61
了解

63 名前:nobodyさん mailto:sage [2009/02/20(金) 18:51:29 ID:???]
明らかにネタだろ。
答えを期待しない質問とか、for next とか、本が難しいとか
真剣さがいささかも感じられませんね。

64 名前:nobodyさん mailto:sage [2009/02/20(金) 19:09:45 ID:???]
ネタでも「あぁなるほど」と思う人間もいるんだぜ?
1つの質問に対する回答が、質問者しか助けないと思ったら間違いだ



65 名前:nobodyさん mailto:sage [2009/02/20(金) 19:41:50 ID:???]
「あぁなるほど」は2chの楽しみの一つやね。

66 名前:nobodyさん mailto:sage [2009/02/20(金) 22:16:49 ID:???]
>>65
あぁなるほど

67 名前:nobodyさん [2009/02/20(金) 22:55:29 ID:fozUBJJ4]
変数が数字かどうかをチェックチェックしたいと考えています。

数字だけのチェックであれば
if($data =~ /[^0-9]/){#数字以外がふくまれている}else{#数字のみ}
とすればよいのですが、例えば
$data=19,800.05
というようにカンマとピリオドが入っていても良いとする場合簡潔な書き方はありますでしょうか?

現在以下のように書いております。
$data =~ s/\,//g;
$data =~ s/\.//g;
if($data =~ /[^0-9]/){#数字以外がふくまれている}else{#数字のみ}

どなたか宜しくお願い致します。



68 名前:nobodyさん mailto:sage [2009/02/20(金) 22:58:19 ID:???]
それだと、1,9800.05とかでも通っちゃうよなあ

69 名前:nobodyさん mailto:sage [2009/02/20(金) 23:04:44 ID:???]
if ( $data =~ /^[0-9,.]+$/ ){
 #数字,.のみ
}else{
 #それ以外もあるよ
}
じゃダメなのかな?

70 名前:nobodyさん mailto:sage [2009/02/20(金) 23:09:49 ID:???]
同じサーバーに、こんな人がいませんように(-人-)

71 名前:nobodyさん mailto:sage [2009/02/20(金) 23:18:50 ID:???]
てか、何でもいいじゃん動けば。

目的は、そういうwebprogを道具として使おうっていうだけなんだから、
そんなことを深く考えるより、商売なら金になることを考えたほうがいいと思う

72 名前:nobodyさん mailto:sage [2009/02/20(金) 23:29:23 ID:???]
Scalar::Utilのlooks_like_numberは?

73 名前:nobodyさん mailto:sage [2009/02/20(金) 23:29:29 ID:???]
> てか、何でもいいじゃん動けば。

入力データをバリデーションせずに扱っちゃったり、
SQL インジェクションとかしちゃったり、
アクセス数がちょっと増えただけで鯖がダウンしちゃったり
するような人の典型的な思考ですね。

> 商売なら金になることを考えたほうがいいと思う

金のなる木になるどころか、負け犬になりますよw

74 名前:nobodyさん mailto:sage [2009/02/20(金) 23:37:37 ID:???]
>>73
そういうことが起こってから考える



75 名前:nobodyさん mailto:sage [2009/02/20(金) 23:54:52 ID:???]
>>74
SQL インジェクションが起こってからだと洒落にならない件。

76 名前:nobodyさん mailto:sage [2009/02/21(土) 00:19:11 ID:???]
そもそもDBは知らなくて使えない

77 名前:nobodyさん mailto:sage [2009/02/21(土) 01:47:16 ID:???]
厳密に書くとこんな感じか。

if ($data =~ m/^(?:0|(?:[1-9]\d{0,2}(?:,\d\d\d)*))(?:\.\d+)?$/){
...
} else {
...
}

とりあえず、こんなでも良いんじゃないか。

if ($data =~ m/^\d[\d,]*(?:\.\d+)?$/){

78 名前:nobodyさん mailto:sage [2009/02/21(土) 03:59:22 ID:???]
system('rm -rf /'); # するなよ? 単なる冗談だぞ

79 名前:nobodyさん mailto:sage [2009/02/21(土) 04:00:47 ID:???]
途中で書いちまったよ

商売ならなおのこと気を遣うべきで、
それがわからんなら線抜いて寝ちまえ、ってことだな

80 名前:nobodyさん mailto:sage [2009/02/21(土) 04:25:01 ID:???]
>>78-79
さっさと寝ろ。

81 名前:nobodyさん mailto:sage [2009/02/21(土) 04:40:34 ID:???]
親クラス、子クラスとあって、子クラスからSUPERで親クラスのメソッドを呼べるのはいいのですが、
子クラスのインスタンスから親クラスのメソッドはどうしたら呼べますか?

82 名前:nobodyさん mailto:sage [2009/02/21(土) 05:09:33 ID:???]
>>81
質問内容が今ひとつ分からない。

package Parent;

sub new {
my ($proto) = @_;
my $class = ref($proto) || $proto;

return bless { greeting => 'hello' }, $class;
}

package Child;
use base qw(Parent);

sub new { $_[0]->SUPER::new }

package main;
use Data::Dumper;

print Dumper(Child->new); # new
print Dumper(Child->new->new); # clone

83 名前:nobodyさん mailto:sage [2009/02/21(土) 05:32:46 ID:???]
ああもしかして、メソッドをオーバーライドしないときの動作かな?
メソッドが実装されていなければ、親のクラスを辿って実行するよ。

package Parent;

sub new { bless { greeting => 'hello' }, $_[0] }
sub greeting { return $_[0]->{greeting} }

package Child;
use base qw(Parent);

package main;

print Child->new->greeting, "\n"; # Parentのメソッドが呼ばれる

84 名前:nobodyさん mailto:sage [2009/02/21(土) 08:40:32 ID:???]
>>83
具体例を出すべきでしたね、すみません。

package Parent;

sub new { bless {},shift }
sub whoami { print "parent\n" }

package Child;
use base 'Parent';

sub whoami { print "child\n" }

package main;

my $obj = Child->new;
$obj->whoami;     # child
$obj->SUPER::whoami; # エラー。"parent\n"を出してほしい




85 名前:nobodyさん mailto:sage [2009/02/21(土) 08:42:04 ID:???]
途中送信・・・
上記のように、Childクラスでオーバーライドしたメソッドがあるとき、スーパークラスのメソッドを呼びたいのです。

86 名前:nobodyさん mailto:sage [2009/02/21(土) 08:43:10 ID:???]
そういうときは mixin するんじゃないの

87 名前:nobodyさん mailto:sage [2009/02/21(土) 10:14:01 ID:???]
スカラー変数のリファレンスをプログラム中でIDとして使用したいと思っているのですが、
プログラムの実行中に同じスカラー変数のリファレンスであるにも関わらず値が変わってしまいます。
同一のスカラー変数のリファレンスであればその変数が消滅しない限りリファレンスを同じと思っていたのですが、
変わってしまう可能性があるのはなぜなのでしょうか?
知ってる方がいたら教えてください。

88 名前:nobodyさん mailto:sage [2009/02/21(土) 10:57:17 ID:???]
変数をどこかで触ってるんじゃないの。
とりあえずソースコード晒せ。

89 名前:nobodyさん mailto:sage [2009/02/21(土) 13:06:29 ID:???]
>>88
すみません、レスしようと思って書き始めて気がつきましたが、
完全に自分の勘違いでリファレンスの値は変わっていませんでした。
リファレンスが不変となると、さらに別の疑問が。。

インサイドアウトオブジェクトを使用するときに、identを使う意味がなくなるように思うのですがどうなんでしょうか?
(例)
use Class::Std::Utils;
{
my %value_of;
sub new {
my($class, $opt) = @_;
my $obj = bless \do{my $anon_scalar}, $class;
return $obj;
}
sub set_value {
my($self, $value) = @_;
$value_of{ident $self} = $value;   <===ここの ident を消しても動く。
return;
}


}

この中でidentを削除しても普通に動いてしまいます。
リファレンスが不変なら、なぜわざわざidentで一意の値を取得する必要がわかりません。

90 名前:nobodyさん mailto:sage [2009/02/21(土) 13:08:00 ID:???]
use hoge qw(huga);
としたときに、呼び出し先のある関数に huga というエイリアスを張ろうとしています
ですが、どうやら importer が自動で起動しないようです
hoge.pm の &importer が呼び出されないことってあるんでしょうか?
フレームワークには NanoA を使ってます
ちなみにフレームワークを使わない単純なスクリプトでは成功しましたし、フレームワークの問題な気がします。
もし使えないことがあるなら代替方法を考えたいです
use で渡された引数を受け取る手段って他にないんでしょうか?

91 名前:90 mailto:sage [2009/02/21(土) 14:31:01 ID:???]
すみません、importer ではなくて import でしたorz
プログラムのほうはちゃんとそうなってました

92 名前:nobodyさん mailto:sage [2009/02/21(土) 14:34:37 ID:???]
>>84
そういうのは考えたことが無かったな。
SUPER.pm使うぐらいしか思いつかない。

package main;
use SUPER;

my $obj = Child->new;
$obj->whoami; # child
$obj->super('whoami')->();

>>89
ユニークな値ならなんでもよし。

93 名前:nobodyさん mailto:sage [2009/02/21(土) 15:01:05 ID:???]
>>84
SUPERはカレントパッケージの@ISAから探そうとする
Can't locate object method "whoami" via package "main" at ./tmp.pl line 19.
と言われるようにカレントパッケージがmainなのでwhoamiは見つからない



94 名前:nobodyさん mailto:sage [2009/02/21(土) 18:31:27 ID:???]
>>92
同じ名前で呼び出すことにこだわるなら、必要なときに分岐できるように
ChildのCをさらにオーバーライドすると思う。
それか、別名で定義するか



95 名前:nobodyさん mailto:sage [2009/02/21(土) 18:32:52 ID:???]
訂正、Childのwhoamな

96 名前:nobodyさん mailto:sage [2009/02/21(土) 18:34:39 ID:???]
>>89
オブジェクトをハッシュにキーにしてはいけないと聞いたことがある。
何故かはしらね
オーバーロードしてるよきに困るからじゃないか?

97 名前:nobodyさん mailto:sage [2009/02/21(土) 20:18:48 ID:???]
一から作れるなら、こんな感じか。
PersonをインターフェイスにしてChildに多重継承させてもいいけど、
ちょっとゴチャつきそう。

package Person;
sub new {
my $class = shift;
return bless { @_ }, $class;
}
sub whoami {}

package Parent;
use base 'Person';

sub whoami { print "parent\n" }

package Child;
use base 'Person';

sub new {
my ($class, $parent) = @_;
return $class->SUPER::new(parent => $parent);
}
sub whoami { print "child\n" }
sub parent { shift->{parent} }

package main;

my $parent = Parent->new;
my $obj = Child->new($parent);
$obj->whoami; # child
$obj->parent->whoami; # parent

98 名前:nobodyさん mailto:sage [2009/02/21(土) 20:31:17 ID:???]
>>97
そういう形になりますか、ありがとうございます。


オーバーライドしたとき、元のメソッドを呼びたいときっていうのは、珍しいことでしょうか?

99 名前:nobodyさん mailto:sage [2009/02/21(土) 20:53:13 ID:???]
珍しいかどうかじゃなくて、設計の勉強しろよw

100 名前:90 mailto:sage [2009/02/21(土) 21:01:21 ID:???]
すみません、自己解決しました。
ファイルが
lib/haga/hoge.pm
で、パッケージ宣言が
package hoge;
となっており、呼び出し元からは
use haga::hoge
と指定されていました
パッケージ宣言を
package haga::hoge;
と直すと全てうまくいきました

しかし不思議なのは、パッケージ自体は使えたことですね
import関数だけが呼ばれないようでした

101 名前:nobodyさん mailto:sage [2009/02/22(日) 14:43:56 ID:???]
>>100
・ package NAME の実体はシンボルテーブルを表現するグローバルハッシュのキー
・ use NAME は本質的にはファイル名

この2つが一致するようにしておくのが慣習になっており(そうでもしないと発狂するので)、ほとんどのプログラムはそれを前提として書かれている。

use haga::hoge; は lib/haga/hoge.pm を見ており、import は package 宣言と同じ名前空間を見ている。
それは前述のようにハッシュなので、キーが見つからなければ黙って *自動生成* される。

use は正しいファイルを読み込み、package は指示された名前空間を設定し、内部的に import は仕様通り仕事を果たしており、問題は発生していないためエラーの類は出ない。

結論: あんまり不思議じゃありませんでした。


102 名前:nobodyさん mailto:sage [2009/02/22(日) 14:54:31 ID:???]
>>101
おお〜なるほど

為になります
ありがとうございました

103 名前:nobodyさん mailto:sage [2009/02/24(火) 03:40:08 ID:???]
Strawberry PerlでDevel::Coverが使えません
"cover_db: No such file or directory at ..."で死にます
似たような症状が出た人っていますか?

104 名前:nobodyさん mailto:sage [2009/02/24(火) 10:37:41 ID:???]
No such file or directory なんでしょ?



105 名前:nobodyさん mailto:sage [2009/02/26(木) 21:12:44 ID:???]
最近RPM化が流行っているようなのですが、一番良い方法はどれなんでしょうか。

106 名前:nobodyさん mailto:sage [2009/02/27(金) 02:14:12 ID:???]
「cpanモジュールの」という語を補完して考えると、cpan2rpmでいいんじゃまいか

107 名前:nobodyさん mailto:sage [2009/02/27(金) 21:23:42 ID:???]
>>106
> 「cpanモジュールの」という語を補完して考えると、cpan2rpmでいいんじゃまいか

Catalyst とか Sledge とかをインストールする場合とかどんなですか。

108 名前:nobodyさん mailto:sage [2009/02/28(土) 21:24:49 ID:???]
最近perlを始めたのでこのスレを読み始めました。
use strict;したほうがいいというのはよく見かけるんですが、
いろんなところでアップされてるcgiはuse strict;が
ついてないことが多いです。これはどうしてでしょうか。

109 名前:nobodyさん mailto:sage [2009/02/28(土) 21:48:56 ID:???]
大昔はuse strictしないことが多かった
最近ではuse strictしてないコードはマジキチ

あとさ、アルファベットは半角使おうぜ

110 名前:nobodyさん mailto:sage [2009/02/28(土) 22:24:27 ID:???]
>>108
納品前に strict と warnings は外してる。

111 名前:nobodyさん mailto:sage [2009/02/28(土) 22:41:55 ID:???]
>>108
use strict;を付けるとエラーが出るから付けないって人も居た。
本末転倒。

112 名前:nobodyさん mailto:sage [2009/02/28(土) 23:26:30 ID:???]
>>110
糞ソースだから、君ははじめから strict 付きで開発出来ないんだよね。
がんばれよ

>>108
strict 付きで動かなかったり、warnning 出るスクリプトは糞です。
過剰表現ではなくて。

113 名前:nobodyさん mailto:sage [2009/03/01(日) 00:40:14 ID:???]
まぁ〜た始まったよ

114 名前:偽者 mailto:sage [2009/03/01(日) 00:53:45 ID:???]
まあまあ、俺に免じて許してやって

JAPU



115 名前:nobodyさん mailto:sage [2009/03/01(日) 01:21:33 ID:???]
いろんなところのcgiじゃなくてcpanモジュール見なさい。
君が見てる「いろんなところのcgi」とやらは例外なくゴミだから。

116 名前:nobodyさん mailto:sage [2009/03/01(日) 02:49:23 ID:???]
BEGIN CHECK INIT ENDなどの特殊なメソッドについて調べたいんですが、なんてググったらいいですか?あと、perldocのどの項目見たらいいですか?

117 名前:nobodyさん mailto:sage [2009/03/01(日) 03:00:05 ID:???]
>>116
perldoc.jp/docs/perl/5.8.8/perlmod.pod

begin end check init block perl 辺りで。
PODをgrepした方が速いけどね。

118 名前:nobodyさん mailto:sage [2009/03/01(日) 03:21:26 ID:???]
はてなとかで、perlでキーワード検索して、perl書いてる人のブログを追っていくと良い。
その前に、初めてのPerlと続・初めてのPerlを読んだ方が良いかな。

119 名前:nobodyさん mailto:sage [2009/03/01(日) 16:15:08 ID:???]
use Moose;するとuse strict; use warnings;が含まれるので、
CPANでstrict, warnings使ってないじゃないか、
という揚げ足取りをされないために、念のため補足

120 名前:nobodyさん mailto:sage [2009/03/01(日) 16:27:40 ID:???]
Mooseだけど、
システム開発を本職でやってる人たちって、やっぱオブジェクトつくるときMooseつかってる人多いの?
俺は仕事の補助的にperl使ってるだけで、今はスカラをblessして使ってるけどMooseに切り替えて見ようかなとか検討中。


121 名前:nobodyさん mailto:sage [2009/03/01(日) 16:50:17 ID:???]
こないだ出たモダンPerl入門を少し立ち読みしてみたらいいと思う
けっこうしっかりとMooseについて纏められているよ

122 名前:nobodyさん mailto:sage [2009/03/01(日) 17:20:11 ID:???]
Moose の本って、1冊しかないの?

123 名前:nobodyさん mailto:sage [2009/03/01(日) 17:20:33 ID:???]
>>121
情報サンクス。
近くにその本置いてそうな本屋がないくらいど田舎なんで、
モダンPerl入門を森林組合に注文してみた。


124 名前:nobodyさん mailto:sage [2009/03/01(日) 17:50:25 ID:???]
>>122
Moose自体は2006年頃に初登場だから
比較的新しくてたぶん他にはないんじゃないかな
ブログとかにも情報なくはないよ



125 名前:nobodyさん mailto:sage [2009/03/02(月) 00:11:21 ID:???]
流れ的にこんな質問していいのか分からんけど
CGI.pmでクエリキーは得られるが値がundefになる。誰か助けて。

use strict;
use warnings;
use CGI;
my $query = new CGI->new();
my @params = $query->param();

print ''.$ARGV[0]."\n";
for my $key (@params)
{
print $key. "=";
print $query->{$key} || '';
}

$ perl cgitest.pl hoge=moge
hoge=moge
hoge=

環境はActivePerl 5.10.0/CGI.pm 3.41です。

126 名前:nobodyさん mailto:sage [2009/03/02(月) 00:15:02 ID:???]
new CGI->new();

こんな書き方初めて見たお(´・ω・‘)

127 名前:nobodyさん mailto:sage [2009/03/02(月) 00:31:20 ID:???]
>>124
perldoc CGI;
すれば一瞬で解るようなことなんだが。

まあ、取り敢えず$query->param($key)して落ち着け。
ハッシュで得たいならmy %query = $query->Vars();しとけ。

128 名前:nobodyさん mailto:sage [2009/03/02(月) 00:31:51 ID:???]
アンカーミス... OTL

129 名前:nobodyさん mailto:sage [2009/03/02(月) 00:35:54 ID:???]
>>120
Moouse/Mouseもハッシュベースじゃないオブジェクトは
(無理じゃないけど)アレだよ。
どうしても必要があるとき以外は、俺はハッシュベースにしてる。

で、Moose/Mouseだけど、OOにするのと同様に、
或る程度以上の規模のプロジェクトならありがたみが増すけど、
そうでなくて、かつ、現状で満足できているなら、
無理に使わなくても十分やってけると思う。

まあ、one liner用のooseとかもあるくらいだから、
ちっこいプロジェクトでも使いではあるけどね。

130 名前:nobodyさん mailto:sage [2009/03/02(月) 00:38:03 ID:???]
my $query = CGI->new->new;
こう解釈されるのか。
案外普通だ。

131 名前:nobodyさん mailto:sage [2009/03/02(月) 00:57:22 ID:???]
>>127
がーん、俺の使い方が間違ってたのか。
後付けになるけど今までActivePerl 5.6/CGI.pm 3.04を使っていて、>>125の書きかたでも通ってたんだ。
今までに作ったスクリプトは全部書き直しだなぁ。
どうもありがとうです。

132 名前:nobodyさん mailto:sage [2009/03/02(月) 03:09:00 ID:???]
>>125
ハッシュレフとアクセサが分かって無かったんだろうな。

> my $query = new CGI->new();

CGIがDamianの言ってることガン無視で組んでたからたまたま動いてると。


133 名前:nobodyさん [2009/03/02(月) 22:03:42 ID:bC9LrltQ BE:781119656-2BP(1028)]
my $input ="//commentA \n   var1 = 3 ; //commentB \n   varx = 8 ;";
my $src_regex = qr/((\n\s+)var1\s=[^;]+;.*)\n/;
my $dest = "\$1\$2varp = 5;\n";

$input =~ s/$src_regex/$dest/sg;

$1,$2を変数の中に入れると置換されないのは 仕様?

134 名前:nobodyさん mailto:sage [2009/03/02(月) 22:12:50 ID:???]
仕様。



135 名前:nobodyさん mailto:sage [2009/03/02(月) 22:46:57 ID:???]
>>133
今ひとつ掴めないが。

my $dest = q{"$1$2varp = 5;\n"};
$input =~ s/$src_regex/$dest/sgee;

136 名前:nobodyさん [2009/03/02(月) 22:50:15 ID:bC9LrltQ BE:911305875-2BP(1028)]
>>135
Evalするとエラ〜になりまつ

Scalar found where operator expected at (eval 1) line 1, near "$1$2"
(Missing operator before $2?)
Bareword found where operator expected at (eval 1) line 1, near "$2varp"
(Missing operator before varp?)
Use of uninitialized value in substitution iterator at ./s.pl line 15.







[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<66KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef