[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[plamo:17971] Re: perl
-
From:早間義博
-
Date:Mon, 3 Mar 2003 16:55:20 +0900 (JST)
- Subject: [plamo:17971] Re: perl
- From: 早間義博<yossi@xxxxxxxxxxxxxx>
- Date: Mon, 03 Mar 2003 16:55:19 +0900 (JST)
From: Yasutaka SUMI <sum@mwb.biglobe.ne.jp>
Subject: [plamo:17965] Re: perl
Date: Mon, 03 Mar 2003 13:37:21 +0900 (JST)
Message-ID: <20030303.133721.730817152.sum@mwb.biglobe.ne.jp>
>
> > > my $number="210";
> > > my $address="city";
> > >
> > > にしましょう。
> > >
> >
> > これは、書いてみましたが、効果はありませんでした。別の意味なのでしょ
> > うか。
>
> 正確にはどう説明すればいいのかは分からないんですが、全くの別物です。
> 私は「local はグローバル」って覚えていますが、local をほとんど使わなく
> なってしまいました。最近使った記憶では、関数の中で関数を定義して再帰呼
> び出しした時かなぁ。
>
「local はグローバル」と言うのは衝撃的な表現です。最近まで
「関数の中で local と書いて置けば、関数外への影響を避けられる。」
と言う利用方法で用いていました。また、my を使いだしてからも使用方
法によって、local で書かないとエラーになります。
(できる限り my にはしています)
感想として「スコープ」を理解していないようです。
> >
> > >
> > > my $keyword = {
> > > phone => {pointer=> \$number, proc=>1,} ,
> > > addr => {pointer=> \$address, proc=>1,} ,
> > > };
> > >
> >
> > この書き方は
> > phone => {pointer=> *number, proc=>1,} ,
> > とどのように違うのでしょう。
>
> このとき、前者は $number へのリファレンスなのに対して、
> 後者は $keyword->{phone}->{pointer} に *main::number が入ります。
> これは $main::number なのか &main::number なのかの区別がないんですね。
この区別がないと言うのは、値が入っているのかリファレンス(これはc
のポインタと理解しています)か利用時に判別出来ないと言うことですね。
>
> 今回の問題は、スコープの異なる local 変数間で型グロブによってシンボル
> を受け渡ししたのが原因なんでしょう。(これが正確な表現なのかは不明です ^^;)
>
らくだ本4頁から「形容詞 local と my」云々と、またじっくり読んでみ
ます。
>
> Cのポインタ like な使い方であれば、リファレンス渡し
> $var1 = \$var2;
> です。
>
判りました。
> > perl で迷うのは、殆ど同じのように見えるのに
> > $abc{"aaa"}{"xyz"}="aaa";
> > と
> > $abc={
> > aaa => { xyz=> "aaa",},
> > };
> > が違うのです。
> > この違いを「らくだ」からは読めませんでした。
>
> この違いを味わうとすれば・・・
略
> こんな感じでしょうか。
>
実行してみました。
-- 早間 yossi@yedo.src.co.jp
- Follow-Ups
-
- [plamo:17972] Re: perl, Tetsuya Ohnishi
- [plamo:17974] Re: perl, Yasutaka SUMI
- References
-
- [plamo:17956] Re: perl, Yasutaka SUMI
- [plamo:17958] Re: perl, 早間義博
- [plamo:17965] Re: perl, Yasutaka SUMI
[検索ページ]
[メール一覧]
Plamo ML 公開システム