トップページ⇒tech
1001コメント344KB

Perlについての質問箱 28箱目

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/10/31(火) 14:52:21
"The duct tape of the Internet" こと、Perlについての質問箱です。
"There's more than one way to do it" ということで、Perlの奥深さについて皆で語り合い、追求してまいりましょう。

CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板 http://pc8.2ch.net/php/ )

CGIの質問は答えがPerlと全然関係ない話に帰着する場合が多かったりするのでWEBプログラミング板に行って聞いたほうが得ですよ。
このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。

http://www.perl.org/get.html
● 2006/10/31現在の最新版: 5.8.8
● 2006/10/31現在の開発版: 5.9.3

前スレ
Perlについての質問箱 27箱目
http://pc8.2ch.net/test/read.cgi/tech/1157874614/

リンク集は>>2-3
過去スレは>>4
0263デフォルトの名無しさん2006/11/14(火) 02:39:27
>>259
> 独習終えたら何を読むといいですかね?

主要モジュールや最近バリバリ書かれているとんがったシステムのソースコード。
0264デフォルトの名無しさん2006/11/14(火) 02:42:13
>>262
> hashのkeyに半角の空白を含む日本語を入れてvalueに数値を入れると

ホントか? ホントにそう書いてあるか?
0265デフォルトの名無しさん2006/11/14(火) 02:54:07
>>264
hashに 「ホゲホゲ 5」 をいれて
keyに 「10」 を入れた時に以下のエラーが出ます。
日本語の取り扱いが間違ってるのでしょうか?

Argument "M-^CzM-^CQM-^CzM-^CQ 5" isn't numeric in array element at ./a.pl line 32, <> line 1.
0266デフォルトの名無しさん2006/11/14(火) 03:07:06
とりあえずエラーが出た行あたりのプログラムさらしてもらったほうがいいと思うけどな。
02672652006/11/14(火) 03:16:46
以下がソースです。

#!/usr/bin/perl -w

# hash----------------------------
%cn2p;

while(<>){
chomp;
# print "$_\n";
@words = split;
# print "n1 $words[0]\n";
# print "n2 $words[1]\n";
# print "n3 $words[2]\n";

$tmp = $words[1] . " " . $words[2];

$cn2p[$tmp] += $p;
}
02682652006/11/14(火) 03:18:44
>>267
間違い。
簡略化したのでエラーが出るのは最後の行です。

10 ホゲホゲ 5

と言うのをファイルから読ませています。

#!/usr/bin/perl -w

# hash----------------------------
%cn2p;

while(<>){
chomp;
# print "$_\n";
@words = split;
# print "n1 $words[0]\n";
# print "n2 $words[1]\n";
# print "n3 $words[2]\n";

$tmp = $words[1] . " " . $words[2];

$cn2p[$tmp] += $words[0];
}
0269デフォルトの名無しさん2006/11/14(火) 03:21:21
だからさ、

Argument "M-^CzM-^CQM-^CzM-^CQ 5" isn't numeric in array element at ./a.pl line 32, <> line 1.

って、配列の添字に数値じゃないのが入れられてるっていうエラーなんだが。
0270デフォルトの名無しさん2006/11/14(火) 03:21:56
>>268
答えを言うのはもったいないので、とりあえず use strict してみようよ。
02712652006/11/14(火) 03:28:11
>>269
hashには数値以外も入れられるんじゃないのでしたっけ?
0272デフォルトの名無しさん2006/11/14(火) 03:29:44
>>271
あなたのコードには、hashは存在しません。
02732652006/11/14(火) 03:32:54
>>272
わかりました!

ありがとうございます。
0274デフォルトの名無しさん2006/11/14(火) 03:46:09
なにこの面白い流れw
答え言っちゃダメでしょw
0275デフォルトの名無しさん2006/11/14(火) 04:51:23
>>274
全員が君みたいな性格って訳じゃないみたいだ
0276デフォルトの名無しさん2006/11/14(火) 08:50:22
argvのvってなんですか?
0277デフォルトの名無しさん2006/11/14(火) 08:56:43
>>276
ベクターだっけ?
0278デフォルトの名無しさん2006/11/14(火) 09:03:57
ふむ、Argument Vectorだな。
0279デフォルトの名無しさん2006/11/14(火) 10:15:56
なるほど。
ありがとう
0280デフォルトの名無しさん2006/11/14(火) 11:25:40
perl使いの性格が良くわかるやりとりでした
0281デフォルトの名無しさん2006/11/14(火) 11:27:32
print <<END_OF_DATA; の中に
use constant LOG_DIR => './logs';
などの LOG_DIR や 関数呼び出しを書くことは可能ですか?
0282デフォルトの名無しさん2006/11/14(火) 11:31:07

foreach my $value (@log) {
if ($flag) {
undef $value;
}
}
ってやると @log から $valueの要素が削除されるのって仕様なの?
0283デフォルトの名無しさん2006/11/14(火) 11:51:34
>>282
削除されたんじゃなくて値がundefになっただけだと思うが、それは仕様。

If any element of LIST is an lvalue, you can modify it by modifying VAR
inside the loop. Conversely, if any element of LIST is NOT an lvalue,
any attempt to modify that element will fail. In other words, the
"foreach" loop index variable is an implicit alias for each item in the
list that you're looping over.
0284デフォルトの名無しさん2006/11/14(火) 11:52:13
↑ごめん引用元書き忘れた。perlsyn(1)です。
02852822006/11/14(火) 13:47:38
でも $value = "";
ってやっても消えないよね
どうなってんの
0286デフォルトの名無しさん2006/11/14(火) 13:53:54
>>285
空文字列の代入
02872822006/11/14(火) 14:11:10
え@logの要素にも空文字列が入るの?
0288デフォルトの名無しさん2006/11/14(火) 14:16:54
関数の引数@_みたいにただのエイリアスなんだね。
02892822006/11/14(火) 14:54:41
まじなのかよこえー
0290デフォルトの名無しさん2006/11/14(火) 15:02:03
>>289
こわいのは自分の無知だろ
0291デフォルトの名無しさん2006/11/14(火) 15:02:17
 ▓       ▓.
      ▓█     ▓█
    ▓▓██   ▓▓██
   ▓▓▓▓▓▓▓▓▓▓▓███
 ▓▓▓██▓▓▓▓▓██▓▓███
 ▓▓█▓▓▓▓▓▓▓▓▓█▓███
 ▓▓▓▓█▓▓▓▓▓█▓▓▓███
 ▓▓▓▓▓█████▓▓▓▓███
  ▓▓▓▓▓███▓▓▓▓███
    ▓▓▓▓▓▓▓▓▓███
  ▓▓▓▓▓▓▓▓▓▓▓▓███
 ▓▓▓▓▓▓▓▓▓▓▓▓▓▓███
 ▓▓▓▓▓▓▓▓▓▓▓▓▓▓███
 これを見ると今年の大学受験に落ちます。
これを今から1時間以内に3回他スレにコピペすれば100%、受かります。
貼らないと
落  ち  ま  す
0292デフォルトの名無しさん2006/11/14(火) 18:30:08
>>281
できない。できたらかえって困る。here document なんだから。
ただ、$hoge のように「$」から始まっていれば変数置換は評価される。
しかし、$hoge がオブジェクトだったとしても
$hoge->method() としても method() は呼び出されない。
0293デフォルトの名無しさん2006/11/14(火) 18:32:01
>>276
>argvのv
釣りにマジレスで Volume。
0294デフォルトの名無しさん2006/11/14(火) 18:52:32
>>281 ↓実験してみ。

sub sum { $_[0] + $_[1] }
use constant THREE => 3;

print <<_EOF_;
${[sum(THREE,4)]}[0]
_EOF_
0295デフォルトの名無しさん2006/11/14(火) 19:47:07
>>294
独創的だな。

普通は @{[ expr ]} か ${\( expr )} だと思うが。
0296デフォルトの名無しさん2006/11/14(火) 20:15:06
print __FILE__ . ":" . __LINE__ .":";
を書くのが面倒なのですが、Cのプリプロセッサのようなことは
できないのでしょうか?
0297デフォルトの名無しさん2006/11/14(火) 20:44:32
windowsXP+Activeperl(v5.8.8)でImage::Magickをインストールしようとして
cpanのshellでinstall Image::Magickと入力するとnmakeが実行されるのですが
windows.hが開けないと言われて終了してしまいます
vc++のインクルードディレクトリにはちゃんとwindows.hのあるディレクトリが指定してあり
vc++のプロジェクトでは普通にwindows.hをincludeすることができます
どうすればインストールできるのでしょうか
0298デフォルトの名無しさん2006/11/14(火) 21:14:32
Perlで例外処理をする方法としてError.pmを使うというのまでは
分かったのですが、Error.pmのエレガントな使い方について
教えてもらえませんか?
0299デフォルトの名無しさん2006/11/14(火) 21:38:14
>>297
駄目な理由は、 lib/config_heavy.pl 参照。
自力でコンパイルする時は、perl自体もソースからコンパイルして生成するか
lib/config_heavy.pl と lib/config.pm を適切に修正する必要があるよ。

ActivePerlならppmを使う方法が楽。
自分は Image Magickのwin32パッケージに入ってる奴を入れた。
方法は Image MagickのREADME.TXTに書かれてる。
0300デフォルトの名無しさん2006/11/14(火) 21:39:38
>>296
プリプロセッサ相当のことならばFilterモジュールがそれだが…
"Thare's more than one way to do it."

sub __HERE__() {
my (undef, $filename, $line) = caller();
return "$filename:$line:";
}
print __HERE__;
03012972006/11/14(火) 22:16:49
>>299
ありがとうございます
ppm使ってやってみようと思います
0302デフォルトの名無しさん2006/11/14(火) 22:59:58
>>300
caller()で十分でした。ありがとうございます。
0303デフォルトの名無しさん2006/11/15(水) 01:38:33
open(IN, "< test.txt");
flock(IN, 2);
@testdata = <IN>;
close(IN);
foreach (@testdata){
$_ =~ s/[\x0D\x0A\r\n]//g;
$_ .= "writed\x0A";
}
open(OUT, "> test.txt");
flock(OUT, 2);
print OUT @testdata;
close(OUT);
exit;

windows上で
こんな感じで「内容が複数行あるテキストファイル」を読み込んで少しだけ改変して
元のテキストファイルに上書きするスクリプトを書いていたのですが、
print OUT @testdata;でファイルへ保存するときに\x0Aが\x0D\x0Aに変換されてしまいます。

改行コードを指定して(この場合は変換せずに\x0Aのままで)保存したいのですが、
テキストファイル保存時の改行コードを指定するにはどうすればよいのでしょうか。
flock後にbinmodeを指定すれば期待通りの動作はしましたが、binmodeを指定せずにできる方法はありませんか。
0304デフォルトの名無しさん2006/11/15(水) 02:08:15
open, IN, '<:raw', test.txt or die "$!\n";
0305デフォルトの名無しさん2006/11/15(水) 03:51:03
間違えた。
open OUT, '>:raw', 'test.txt' or die "$!\n";
flockも数字リテラルよりもFcntl.pmを使うのがお薦め。
0306デフォルトの名無しさん2006/11/15(水) 05:05:31
私はPerlはCGIとしてWebベースで動くものしか作ったことが無い者ですが教えてください。

Windows+ActivePerl5.8の環境で、Windows標準の時計(時刻)をPerlで変更することってできますか?
0307デフォルトの名無しさん2006/11/15(水) 07:29:58
できる
0308デフォルトの名無しさん2006/11/15(水) 08:39:58
>>306
それは、Perlじゃなくて、その、なんていうの、そうゆうのは時計のほうを調べるんだよ。
0309デフォルトの名無しさん2006/11/15(水) 10:15:47
use constant THREE => 3;

で &test(THREE);ってかくとエラーなんですけどなんでですか?
それと自作関数に&付ける人といない人がいますけど違いってあるの?
0310デフォルトの名無しさん2006/11/15(水) 10:29:31
>>309
エラーメッセージはインタプリタが人間に分かるように適切に出す大事な情報なんだよ。
おまえの説明はソースとエラーメッセージを省略してるからエスパーしか状況を把握できんぞ。
助けを求めるときには、おまえではなく他人に分かるように状況を説明しろ。
0311デフォルトの名無しさん2006/11/15(水) 10:43:26
>>309
http://www.kt.rim.or.jp/~kbk/perl-5.8/perlfaq7.html#what_s_the_difference_between_calling_a_function_as__foo_and_foo__
http://www.kt.rim.or.jp/~kbk/perl5.005/perlsub.html
0312デフォルトの名無しさん2006/11/15(水) 11:33:26
>>309
どこでどのようなエラーが出るのか、省略せずに全部書け。

サブルーチン呼出しで & を付ける必要があるのはそれがサブルーチン名だと
判別できない場合、つまり後ろの () がない状態で使う場合だ。
03133092006/11/15(水) 12:42:45
ありがとうこざいます
サブルーチンのほうはわかりました。

>>209のソース間違えてました。
use constant (PL => 'test.pl');

require PL;

Can't locate PL.pm in @INC (@INC contains: C:/Perl/site/lib C:/Perl/lib .) at te
st.pl line 3.
とでます。PL.pm になってるんですが置き換えできないのでしょうか?
0314デフォルトの名無しさん2006/11/15(水) 12:54:41
>>313
サブルーチンの引数とrequireではかなり話が違う。

reqruire PL;

だとrequireに対してベアワードが引数だったときに'.pm'をつけてファイルを探す機能の
方が先に効いてしまうので

reqruire (PL);

などとすればよい。

03153092006/11/15(水) 13:01:37
できました。ありがとうこざいます。
0316デフォルトの名無しさん2006/11/15(水) 19:12:32
        ,, ―- 、_
      /        '' - ,,
    /             '' - ,,
   /                 ヽ
  i           / /ヽ    !
  ,i          ./ / ''―、   !
  i     ,、 n て'' ノノ    ヾ   !
  i    ノノノ ノ ノ ''´      !  /
 �U   j   ' ´    ノ (    ヽ |
 >-,,  /  ,,=━━・!' ,ノ━== ! ノ
 !・  ヽ |  ’ニンniii、 :::::i/ィ7iii=  i )
 \(てi iヽ   ^' ~     -'  /}
  `i_   、 \        i_    l_j
   `┐ i    /(,,, ,n 〉   /\\   もうスクリプトっていうレベルじゃねぇぞ!
  ̄ ̄へ    ! '   T''    l |  \
   |  ! i    ン=ェェi) i ソ )
   |  i´\! ,, -ェ`、_ン ノノ 〈
   |  |  \\,, `―''´//  |
   |  つ   !、_'''''''''''''  /   7
0317デフォルトの名無しさん2006/11/15(水) 22:32:46
>>312 の解説をより正確にすると以下のようになります。参考までに。

サブルーチン呼出しよりも定義が先に perl に読まれる場合は () と & を省略可能。
サブルーチン呼出しよりも定義が後に perl に読まれる場合は () か & のいずれかが必要。
いずれの場合でも () または &、もしくはその両方を記述する事ができます。
いずれの場合でも & を付けるとプロトタイプ宣言を無視します。
0318デフォルトの名無しさん2006/11/15(水) 22:36:57
& って付けるメリットあるの? リファレンス取るときぐらいしか付けないなぁ。
0319デフォルトの名無しさん2006/11/15(水) 22:59:57
$string = <<HOGE
value1<TD>1<TD>value2<TD>24</TR>
<TD>ほげ<TD>73<TD>/\565
HOGE
;

$string =~ /value1<TD>(.*?)<TD>value2<TD>(.*?)<\/TR>(?:.|[^.])*?ほげ<TD>(.*?)<TD>/;

print(
"value1:$1\n".
"value2:$2\n".
"ほげ:$3\n"
);

これを実行すると

value1:
value2:
ほげ:

と何も表示されないのですが、$stringの中の\565のどれか一つ以上を消す、
パターンの中のほげの前に<TD>をつける、ほげを半角英数に置き換えるのいずれかをすると

value1:1
value2:24
ほげ:73

とうまくいきます。なぜですか?
0320デフォルトの名無しさん2006/11/15(水) 23:06:24
>>318
&をつけることによってプロトタイプを無視できる。
0321デフォルトの名無しさん2006/11/15(水) 23:08:39
プロトタイプ無視して何がうれしいのかという疑問が...
03223172006/11/15(水) 23:51:42
>>318
最大のメリットは定義済か未定義かに加えて、言語組込の予約語との名前衝突を気にしなくてよくなる点ですが、>>317 では意図的に省いています。
でもこれはメリットかどうか微妙というかなんというか…、「やりたければそうすることもできるよ」という「Perl 流」(というよりも UNIX 流) の一例とは言えるでしょう。
常に付けておけば、マイナーな予約語との衝突によるややこしいエラーと格闘せずに済むという点ではメリットかもしれません。
0323デフォルトの名無しさん2006/11/16(木) 00:00:06
>>319
$string =~ m{value1<TD>(.*?)<TD>value2<TD>(.*?)</TR>[\r\n]*<TD>ほげ<TD>(.*?)<TD>};
素直に改行をマッチさせるんじゃダメなん?

>>322
予約語との衝突を防ぐのと、プロトタイプチェックされるのとでは、断然後者のほうが有益なような…
それに、衝突のチェックは、例えば構文色分けできるエディタで予約語を色分けすれば防げるよね。
まあ、個人の主観の問題なので、TMTOWTDIってことで……。
03243192006/11/16(木) 00:18:00
>>323
なぜ\565を削除するしないで結果が変わるのか知りたいです。
0325デフォルトの名無しさん2006/11/16(木) 00:23:49
>>324
なんだか面白い現象だね >>319 。
ぼくもよくわからんけど、さしあたり /\\\d\d\d?/ のような文字列が八進表現の文字コードによる文字指定として展開される点については知っていますか?
0326デフォルトの名無しさん2006/11/16(木) 00:49:19
>>318
あと、歴史的な理由もなかったかな。
perl4 とか 3の頃では、自作サブルーチンの呼び出しに&は必須だったような記憶が。
0327デフォルトの名無しさん2006/11/16(木) 00:51:49
>>324
>>325 の書いてる通り \565 は1つの文字として扱われてるんだけど、
Perl では文字列中に ASCII の範囲で表せない文字(255番以降の文字)が入ってると
UTF-8 の文字列として扱われる。(正確には UTF-8 をPerl独自に拡張した「utf8」)

この時、同じ文字列中にある「ほげ」も UTF-8 に変換されるけど、
その結果、正規表現中の(ファイルのエンコーディングでの)「ほげ」という文字の並びと
変換された「ほげ」が一致しなくなるので、マッチしなくなってしまう。
(しかも、\565 なんてわけがわからない文字と一緒だから、誤変換されてるっぽい)

これを防ぐには、スクリプトファイル自体を UTF-8 エンコーディングで保存して、
頭に use utf8; を付ければよい。文字列もパターンも全てUTF-8で統一されてハッピー。
0328デフォルトの名無しさん2006/11/16(木) 01:45:12
>>324
\565 がiso-8859-2(latin2 , 1文字=1バイト)で表現できない文字だから。
なので、$stringはutf8化されて格納される。

正規表現もiso-8859-2扱いだが、正規検索エンジンがutf8化を考慮しないので、
(utf8の仕様上)ASCII範囲外の文字がマッチしなくなる。
03293192006/11/16(木) 07:26:41
>>325,327-328
なるほど。
そういうわけだったんですか。

では\565を消さずともほげの前に<TD>を追加するとマッチするのはなぜなんでしょうか?
<TD>に特別な意味はないのであるなしにかかわらず$stringはutf8として扱われ、結果マッチしないと思うのですが。
03303092006/11/16(木) 10:31:24

use strict;
use constant (STR => 't', FLAG_X => 1);

if (FLAG_X && test()) {
print "OK";
}

sub test {
return 1;
}
Bareword "FLAG_X" not allowed while "strict subs" in use at t.pl line 4.
Execution of t.pl aborted due to compilation errors.

これはなぜなのでしょうか?
複数の定数を定義するとこうなるのですが
0331デフォルトの名無しさん2006/11/16(木) 11:12:38
while (<DATA>) {
$file{$num} = [(split)[2..4]];


この場合、splitは何を表しているのでしょうか?
0332デフォルトの名無しさん2006/11/16(木) 11:38:23
>>330

use constant {STR => 't', FLAG_X => 1};
0333デフォルトの名無しさん2006/11/16(木) 11:39:47
>>330
それ複数の定数の定義になってないし。perldoc constantよく読め。

× use constant (STR => 't', FLAG_X => 1);
○ use constant {STR => 't', FLAG_X => 1};

ちなみに上も便宜上×と書いたがそれはそれで正しい書き方で、
('t', 'FLAG_X', 1)というリストを値とする定数STRを定義したことになる。
0334デフォルトの名無しさん2006/11/16(木) 11:42:26
>>331
$_ = "aa bb cc dd ee";
$a = [(split)[2..4]];
print join(",", @{$a}) . "¥n";
-----
cc,dd,ee
0335デフォルトの名無しさん2006/11/16(木) 11:44:03
>>331
すべての引数を省略して組み込み関数splitを呼んでるだけ。
引数省略したときどういう意味になるかはマニュアル読め。
03363302006/11/16(木) 15:36:41
ありがとうこざいました。
0337デフォルトの名無しさん2006/11/16(木) 16:11:09
Perlのオブジェクト指向使いづらっ
0338デフォルトの名無しさん2006/11/16(木) 16:20:23
OOPは後から取って付けたものだからねえ。
言語はケースバイケースで使い分けられるのがよろし。
0339デフォルトの名無しさん2006/11/16(木) 16:20:48
どの辺が使いにくいと思ったかも書けよ。
0340デフォルトの名無しさん2006/11/16(木) 17:18:36
そんな自明のことは書かなくていい
0341デフォルトの名無しさん2006/11/16(木) 17:27:23
そこまでいうとOOP使いづらいのも自明じゃないか...
0342デフォルトの名無しさん2006/11/16(木) 18:20:55
ぶっちゃけ慣れの問題だろ
03433282006/11/16(木) 19:03:09
>>329
ごめん、嘘書いてた。
iso-8859-2じゃなくてiso-8859-1だよ。
それと、「正規検索エンジンはユニコード/非ユニコード間のマッチが不完全」がより正確。
詳細は、perlソースのrecomp.cやreexec.c付近。

改めて、(328までを理解した前提で)319がマッチしない部分の詳細。

m/(?:.|[^.])*?ほげ/ は「複雑なパターン」の繰り返し+固定文字列として処理される。
この場合、繰り返しの終了判定に「固定文字列の先頭バイトと次の1バイトが一致」
という条件が追加される。
この追加の判定はユニコード/非ユニコード間の比較を考慮していないので、
「固定文字列の先頭バイトがutf8表現でも同じバイト表現」である場合を除き
正しい位置で「複雑なパターンの繰り返し」が終了しなくなる。

具体的にsjisでは「ほ」は 82 d9 で、\x{82}という文字のutf8表現は C2 82
本来繰り返しを終了すべき位置での判定は 82 と C2 になり、繰り返し部分の
処理が継続されてしまう。
eucやuse utf8してない場合のutf8でも似たようなもの。

319の正規表現だと、他の部分はユニコード/非ユニコード間を正しく処理できる。
だから、「(複雑なパターン)*?固定文字列」部分の*?直後に来る文字(固定文字列
の先頭文字)がutf8化しても同じバイト表現になる(=ASCII文字セットに含まれる)
事が、正しくマッチが行われる為の条件になっている。
0344デフォルトの名無しさん2006/11/17(金) 11:06:23
$data{$moji} = [ $num1, $num2 ];

これはどのような動きをしているんでしょうか?
変数名は気にせずに。
0345デフォルトの名無しさん2006/11/17(金) 11:18:40
>>344
代入です
0346デフォルトの名無しさん2006/11/17(金) 11:19:33
>>345
とはいっても、mojiに代入できるのは1つでは?
0347デフォルトの名無しさん2006/11/17(金) 11:20:07
>>344
ハッシュdataのキー$mojiの値を、リスト($num1, $num2)へのリファレンスにしている。
0348デフォルトの名無しさん2006/11/17(金) 11:22:17
>>347

key value
moji → num1
moji → num2

ということでしょうか?
data{key}をプリントすれば
num1 と num2が表示されるということでしょうか?
0349デフォルトの名無しさん2006/11/17(金) 11:27:51
プリントしてみなよ
perl リファレンス でぐぐるといいかも
0350デフォルトの名無しさん2006/11/17(金) 11:36:22
my (%data);
my $num1 = 3;
my $num2 = 4;
my $moji =tetra;

$data{$moji} = [ $num1, $num2 ];

print("%d",$data{$moji});


perl 実行
%dARRAY(0x85a7c28

何かよくわからない結果になってしまったのですが・・・

0351デフォルトの名無しさん2006/11/17(金) 11:43:05
それがリファレンスです
0352デフォルトの名無しさん2006/11/17(金) 11:43:21
>>350
デバッグしろ
0353デフォルトの名無しさん2006/11/17(金) 11:44:04
デバッグってどうするんですか?
0354デフォルトの名無しさん2006/11/17(金) 11:47:43
「リファレンス」って言葉が何回も出てるし
「perl リファレンス でぐぐるといいかも」ともあるだろ
0355デフォルトの名無しさん2006/11/17(金) 11:48:43
少なくとも結果はでてます
0356デフォルトの名無しさん2006/11/17(金) 11:54:33
なんすかー
わからないなら知ったかしないでください
0357デフォルトの名無しさん2006/11/17(金) 12:05:05
>>353
どこが間違っているか調べて、それを修正して正しくする。
0358デフォルトの名無しさん2006/11/17(金) 12:35:21
ここで説明するより、解説してるサイトや本を見てもらったほうが早い
ひと通り見た上でわからない点があれば質問するといいよ
0359デフォルトの名無しさん2006/11/17(金) 12:41:39
のってない
0360デフォルトの名無しさん2006/11/17(金) 12:46:18
>>359
何が?
0361デフォルトの名無しさん2006/11/17(金) 12:48:17
http://pc8.2ch.net/test/read.cgi/tech/1163409543/16
マルチ?
0362デフォルトの名無しさん2006/11/17(金) 12:50:38
perl リファレンス 無名配列
ぐぐって1ページ目の全サイトを1日かけて読め
■ このスレッドは過去ログ倉庫に格納されています