Perl の参照(リファレンス)ですが上手く動きません。ご指摘お願いします。


sub func($¥@)
{
my($a, @ar)= @_;
push @$ar, ”add”;
}

# サブルーチンの呼び出し
my($in);
my(@out);
&func($in, ¥@out);
# @out に ”add” が入ってほしい。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/09/09 16:35:32
  • 終了:--

回答(2件)

id:Kumappus No.1

くまっぷす回答回数3784ベストアンサー獲得回数1852005/09/09 17:14:03

ポイント40pt

http://oshiete1.goo.ne.jp/kotaeru.php3?q=240709

[教えて!goo] Perlのサブルーチンの引数に配列やハッシュをCall by Valueすることはできない?

よその掲示板にも出てますね。リファレンス、デリファレンスめんどくさいです。Rubyにしましょうよ。それはさておき。


こんな感じでやると動きます。

sub func

{

my($a, $ar)=@_;

push @$ar, ”add”;


}


my($in);

my(@out);


&func($in,¥@out);


要は関数内で

my($a, @ar)=@_;が間違いで

my($a, $ar)=@_;

なのでした。リファレンス自体は(ポインタみたいなもんなので)スカラー変数で受ける必要があります。

id:disca

ソースコードありがとうございます。

>リファレンス自体は(ポインタみたいなもんなので)スカラー変数で受ける必要があります

この「「一言」」で全てが解決できました^^/。

2005/09/09 17:26:08

質問者が未読の回答一覧

 回答者回答受取ベストアンサー回答時間
1 浅倉卓司 151 139 2 2005-09-09 17:19:11

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

  • Disca の Discovery Diary Disca の Discovery Diary 2006-03-13 16:13:09
  • Perl_misc 個人的なメモのページ PukiWiki plus! (PukiWiki/TrackBack 0.3) 2009-12-22 22:52:03
    その他 ▲ ▼読み書き両用のFileオープン ファイルが存在しない場合は作ってくれない。エラーも発生しない。 open(FILE,"+<data.log"); ファイルが存在しない場合は作ってくれる
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません