[表示 : 全て 最新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/

13 名前:nobodyさん mailto:sage [2009/02/17(火) 15:41:52 ID:???]
print '1% finished.';
print "\r";
print '2% finished.';
以下略 ってことね。

14 名前:nobodyさん mailto:sage [2009/02/17(火) 15:45:27 ID:???]
こんな感じの表示にしたらいいのでは
....5....10....15....20....25....30....35...

15 名前:nobodyさん mailto:sage [2009/02/17(火) 15:52:37 ID:???]
Smart::Commentsのプログレスバーは?
search.cpan.org/~dconway/Smart-Comments-v1.0.3/lib/Smart/Comments.pm

16 名前:nobodyさん mailto:sage [2009/02/17(火) 15:56:11 ID:???]
>>13
キャリッジリターンの存在をすっかり忘れてましたw
希望通りの動作ができました
感謝です

>>14
一旦そのやりかたも考えましたが、一度考えた表示の仕方から逃げるみたいでなんかイヤだったんですよね^^;



ありがとうございました m(_ _)m

17 名前:nobodyさん mailto:sage [2009/02/17(火) 22:06:02 ID:???]
文字化けになった「エスケープシーケンス」って何?

18 名前:nobodyさん mailto:sage [2009/02/17(火) 22:25:23 ID:???]
>>17
ttp://www.mars.dti.ne.jp/~torao/program/appendix/esc.html

19 名前:nobodyさん mailto:sage [2009/02/18(水) 16:50:38 ID:???]
配列の要素を吐き出す際に、3の倍数の時に改行を入れようと
if($in/3 = 整数型)
上記のような事を考えていましたがperlでは整数型等の指定が出来ないみたいです。
何か方法がございましたら教えて頂けないでしょうか。よろしくお願いします。

20 名前:nobodyさん mailto:sage [2009/02/18(水) 16:55:58 ID:???]
>>19
if ($in % 3 == 0)

21 名前:nobodyさん mailto:sage [2009/02/18(水) 17:17:10 ID:???]
>>20
ありがとうございました。
条件式に余剰が使えるという発想がありませんでした。
もっと色々考えないといけませんね。



22 名前:nobodyさん mailto:sage [2009/02/18(水) 17:28:53 ID:???]
print "\n" if !($in % 3);


23 名前:nobodyさん mailto:sage [2009/02/18(水) 19:30:14 ID:???]
>>22
unlessの事もたまには…

24 名前:nobodyさん mailto:sage [2009/02/18(水) 19:34:19 ID:???]
そういや、そんな子も居ましたね・・・

25 名前:nobodyさん mailto:sage [2009/02/19(木) 02:34:53 ID:???]
unless ($hoge or $huga) とか unless ($hoge and $huga) とか、ぱっと見で意味が分からん
考えてもわからんけどな

26 名前:nobodyさん mailto:sage [2009/02/19(木) 02:40:24 ID:???]
周辺にコメントで
# if (!($hoge or $huga))
とか
# if (!($hoge and $huga))
って書いておけばいいんじゃねw

27 名前: ◆TWARamEjuA mailto:sage [2009/02/19(木) 07:16:44 ID:???]
(´-`).。oO(偶にはuntilのことも思い出してあげてください。。。)

28 名前:nobodyさん [2009/02/19(木) 13:22:08 ID:X+sdAMms]
配列に配列を入れるのはどうすればいいのですか?

単純に
@a = @b;
でいいのですか?

29 名前:nobodyさん [2009/02/19(木) 14:35:52 ID:X+sdAMms]

書き込むファイル名を変数で変えたいのですが美味く動きません、下記のどこに問題がありますか?

$data = "data.txt";

open(OUT, "> $data");
print(OUT "$s[0]",",","$s[1]");
close(OUT);



30 名前:nobodyさん mailto:sage [2009/02/19(木) 14:41:29 ID:???]
>>28
OK だけど、a とか b だけの変数名はオススメしない

>>29
こういうデータを希望してるのに、こんなデータになってしまう
ぐらいの言葉書けないの?
バカなの?
死ぬの?

31 名前:nobodyさん mailto:sage [2009/02/19(木) 14:45:02 ID:???]
open(OUT, "> data.txt");
print(OUT "$s[0]",",","$s[1]");
close(OUT);

こうなるのを期待しているのですが

open(OUT, "> ");
print(OUT "$s[0]",",","$s[1]");
close(OUT);

こうなるようです。専門用語はわかりません、すみません。



32 名前:nobodyさん mailto:sage [2009/02/19(木) 15:09:48 ID:???]
特におかしいようにも見えないがそれ本当に動かしてるソースじゃ
ないだろ?

コピペして@sに適当な値を入れてためしに実行したけどちゃんと
data.txtになんか書かれたよ。

とりあえず一般論として:

openにはエラートラップ必須。ちゃんと書くのが
面倒でもせめて or die $! をつける

いまどき2引数openは流行らない。3引数で書こう。

33 名前:nobodyさん mailto:sage [2009/02/19(木) 16:28:12 ID:???]
strictの勉強してるんだけど、外部から読み込んだハッシュのコピーする時に
our宣言が必要な場合は、

my %hoge = our %moge;

って感じで書くとエラーでないけどこういう書き方は問題ない?

our %moge;
my %hoge = %moge;

って書くべき?

34 名前:29 mailto:sage [2009/02/19(木) 16:28:52 ID:???]
単純に変数のつづりを間違っていただけでしたありがとう御座いました

35 名前:nobodyさん mailto:sage [2009/02/19(木) 16:53:49 ID:???]
>>33
どちらでも言語的には正しいが、俺は見易さから後者にするね。
わざわざourとか使うぐらいだからそれなりに大きいプログラム
なんだろうし。

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:???]
まぁ〜た始まったよ






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

前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