下へ
>  2000/12/12 (火) 11:57:21        [mirai]
> > 二人もいるとは豊作だ
> > use strict;
> > した場合に
> > local $foo;
> > とローカル宣言が出来なくなるよね
> > これの代用方法というかuse strict;した場合もlocalと同様のスコープを持つ変数を使いたいんだが
> > どうすればいいのだろう
> > それともuse strict;しない方がいいのだろうか
> sub a1 {
> 	local $foo;
> 	a2();
> }
> sub a2 {
> 	$fooを使う
> }
> 
> むりやりmyで実現してみる。
> sub b {
> 	my $foo;
> 	my $b1 = sub {
> 		&$b2;
> 	};
> 	my $b2 = sub {
> 		$fooを使う
> 	};
> 	&$b1;
> }
> ここまでしたい?
> 素直に引数使っておけ。

遅レスでスマンコ
テレビ見てたもんで
さっきちょっと調べてたらmyはperl5から実装されたみたいだね
localよりもmyを使うことを推奨してるみたい
引数渡す方法でやってみるよ
もしくは頻繁に参照する値はグローバルでってことみたいだな


参考:2000/12/12(火)10時46分07秒

>  2000/12/12 (火) 10:46:07        [mirai]
> 二人もいるとは豊作だ
> use strict;
> した場合に
> local $foo;
> とローカル宣言が出来なくなるよね
> これの代用方法というかuse strict;した場合もlocalと同様のスコープを持つ変数を使いたいんだが
> どうすればいいのだろう
> それともuse strict;しない方がいいのだろうか

sub a1 {
	local $foo;
	a2();
}
sub a2 {
	$fooを使う
}


むりやりmyで実現してみる。
sub b {
	my $foo;
	my $b1 = sub {
		&$b2;
	};
	my $b2 = sub {
		$fooを使う
	};
	&$b1;
}

ここまでしたい?
素直に引数使っておけ。

参考:2000/12/12(火)10時12分20秒

>  2000/12/12 (火) 10:28:17        [mirai]
> > そうするか・・
> > というかlocalのスコープってちょっと便利そうに思ったんで使ってみたかったんだが
> > strictを使うとlocalが使えなくなるというのはちょっと不便かな
> myは?

myは宣言したルーチンから抜けると使用不可能になるんだが
localだと宣言したルーチン下から呼び出された全てのルーチン内でスコープを持つ


参考:2000/12/12(火)10時21分28秒

>  2000/12/12 (火) 10:26:09        [mirai]
> > 二人もいるとは豊作だ
> > use strict;
> > した場合に
> > local $foo;
> > とローカル宣言が出来なくなるよね
> > これの代用方法というかuse strict;した場合もlocalと同様のスコープを持つ変数を使いたいんだが
> > どうすればいいのだろう
> > それともuse strict;しない方がいいのだろうか
> local($foo);

それも駄目
取り合えずmainルーチン内で宣言した変数はlocalのように動くが
サブルーチン内で宣言した変数は全てそのルーチン内でのみしか使えないのか
グローバルに使いたい場合はメインルーチンで宣言するしかないのかな


参考:2000/12/12(火)10時17分44秒

>  2000/12/12 (火) 10:21:28        [mirai]
> > 素直に引数として渡せばどうよ?
> そうするか・・
> というかlocalのスコープってちょっと便利そうに思ったんで使ってみたかったんだが
> strictを使うとlocalが使えなくなるというのはちょっと不便かな

myは?

参考:2000/12/12(火)10時19分50秒

>  2000/12/12 (火) 10:19:50        [mirai]
> > 二人もいるとは豊作だ
> > use strict;
> > した場合に
> > local $foo;
> > とローカル宣言が出来なくなるよね
> > これの代用方法というかuse strict;した場合もlocalと同様のスコープを持つ変数を使いたいんだが
> > どうすればいいのだろう
> > それともuse strict;しない方がいいのだろうか
> 素直に引数として渡せばどうよ?

そうするか・・
というかlocalのスコープってちょっと便利そうに思ったんで使ってみたかったんだが
strictを使うとlocalが使えなくなるというのはちょっと不便かな


参考:2000/12/12(火)10時14分34秒

>  2000/12/12 (火) 10:17:44        [mirai]
> 二人もいるとは豊作だ
> use strict;
> した場合に
> local $foo;
> とローカル宣言が出来なくなるよね
> これの代用方法というかuse strict;した場合もlocalと同様のスコープを持つ変数を使いたいんだが
> どうすればいいのだろう
> それともuse strict;しない方がいいのだろうか

local($foo);

参考:2000/12/12(火)10時12分20秒

>  2000/12/12 (火) 10:14:34        [mirai]
> 二人もいるとは豊作だ
> use strict;
> した場合に
> local $foo;
> とローカル宣言が出来なくなるよね
> これの代用方法というかuse strict;した場合もlocalと同様のスコープを持つ変数を使いたいんだが
> どうすればいいのだろう
> それともuse strict;しない方がいいのだろうか

素直に引数として渡せばどうよ?

参考:2000/12/12(火)10時12分20秒

2000/12/12 (火) 10:12:20        [mirai]
二人もいるとは豊作だ
use strict;
した場合に
local $foo;
とローカル宣言が出来なくなるよね
これの代用方法というかuse strict;した場合もlocalと同様のスコープを持つ変数を使いたいんだが
どうすればいいのだろう
それともuse strict;しない方がいいのだろうか

上へ