perlの質問です。

以下のプログラムで、sub2の中で、
$fugaを表示したいのですが、どのようにすればよいでしょうか?

----------------
#!/usr/bin/perl
use strict;
my $hoge=1;
sub1();

sub sub1{
my $fuga=2;
sub2();
}

sub sub2{
print $hoge;
#print $fuga;
}

回答の条件
  • 1人2回まで
  • 登録:2007/12/19 11:02:15
  • 終了:2007/12/19 12:45:51

回答(2件)

id:GEN111 No.1

GEN111回答回数472ベストアンサー獲得回数582007/12/19 11:34:02

ポイント35pt

こうとか。

sub sub1{
my $fuga=2;
sub2($fuga);
}

sub sub2($;){
print $hoge;
print shift;
}
id:bonyan

ありがとうございます。

$fugaをsub2に引数で渡す、ということですね。

2007/12/19 11:38:27
id:kyosh No.2

kyosh回答回数143ベストアンサー獲得回数52007/12/19 11:35:58

ポイント35pt
#!/usr/bin/perl
use strict;
my $hoge=1;
sub1();

sub sub1{
local $fuga=2;
sub2($fuga);
}

sub sub2{
local $fuga = shift;
print $hoge;
print $fuga;
}

とか、

#!/usr/bin/perl
use strict;
my $hoge=1;
my $fuga;
sub1();

sub sub1{
$fuga=2;
sub2();
}

sub sub2{
print $hoge;
print $fuga;
}

ではダメですか?

id:bonyan

ありがとうございます。

上は、GEN111さんと同じですね。

下は、$fugaをあらかじめ宣言しておく、ということですね。

以下ご解答いただける方があれば、上記以外でお願いいたします。

いろんな方法を知りたいので、よろしくお願いいたします。

2007/12/19 11:40:48
  • id:kyosh
    というか…質問文のままで表示される気もしますが^^;;
  • id:bonyan
    kyoshさん、コメントありがとうございます。

    sub2の中の、
    #print $fuga を
    print $fuga

    とすると、
    「Global symbol "$fuga" requires explicit package name at test.cgi line 13.」
    というメッセージが表示されるのですが、、、
  • id:kyosh
    うーん、そうですか、、、

    perl5.6とかだったらourを使ってみるのもいいかもしれません。

    http://books-support.softbank.co.jp/pn/special04-1.html

    http://www.hyuki.com/yukiwiki/wiki.cgi?perl%A4%CEour%A4%CB%B4%D8%A4%B9%A4%EB%A4%B3%A4%C8

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

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

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

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