![]() |
|
|
Googleのunix.com
|
|||||||
| シェルプログラミングとスクリプティング KSH 、 CSH 、 shに、 bashの、はPerl 、 PHPは、削除するsed 、 Awkの、他のシェルスクリプトやシェルスクリプト言語についての質問の投稿はこちら。 |
その他のUNIXおよびLinuxフォーラムトピックは参考にすること
|
||||
| スレッド | スレッドスターター | フォーラム | 返信 | 最後の投稿 |
| Perlの:グローバル検索と置換 | epi8 | シェルプログラミングとスクリプティング | 3 | 2008年5月6日 04:18午後 |
| 問題はグローバルとローカル変数で | qzv2jm | シェルプログラミングとスクリプティング | 2 | 2008年3月4日 01:18午後 |
| KLDグローバル変数を宣言する | int80h | BSDの | 1 | 2008年1月21日 09:11午前 |
| KLDのグローバル変数( FreeBSDの) | int80h | 高レベルのプログラミング | 0 | 2008年1月17日 08:14午後 |
| シェルスクリプトをどのようにグローバル変数を宣言する | risshanth | UNIXのダミー質問と回答のため | 2 | 2007年10月31日 03:27午前 |
![]() |
|
|
LinkBack | スレッドツール | このスレッドを検索 | スレッドを評価 | 表示モード |
|
|
|
||||
|
維持すべきであることは、地元地域は良い家事の練習です。 技術的には、ローカル(自分の)変数を使用して名前空間の衝突を話す必要があるから排除するのが発生し、実際にはいくらかの目的があります無関係です。つまり、必ず、専ら語彙範囲のみに依存する変数のスコープにすることです。そこで、現在のブロック内を直接見て、どこにも他の変数のスコープを伝えることができます。サブルーチンのブロック内から呼び出さ変数は表示されません。だから、 コード:
{ # BLOCK 1
my $var = 10;
{ # BLOCK 2
local $var2 = 100;
&mysub;
print "\$var = $var\n"; # (1)
print "\$var2 = $var2\n"; # (2)
}
$var += 10;
print "\$var = $var\n"; # (3)
print "\$var2 = $var2\n"; # (4)
}
&mysub;
print "\$var = $var\n"; # (5)
print "\$var2 = $var2\n"; # (6)
sub mysub {
$var += 2;
$var2 += 2;
}
お察しのように、 "私は$ var "ブロック1ではなくサブルーチンの範囲内ということです。そこで( 1 )および( 3 ) 10と20になっています。これは$ varのサブルーチン( )を変更したのでmysub ?これは、世界的な$ varには、 ( 5 )で4 "と" "後の範囲( 2呼び出し)私は$ var "の有効期限が表示されます。場合は、スコープ(代わりの呼び出しは、サブルーチンのネストなると呼ばれる)は、値がうまくいかないときは、デバッグが容易になりますつまり、スタックに応じて特定することができます。 Perlの また、その他に" "は、スコープを実装し、左右でのコールスタック期限ローカル与える(うち一般的に、今日のプログラミング言語を使用する)ので、 ( 2 ) 、稀( 4 ) 、 ( 6 ) 102 、 undefとしている2 。さらに混乱しているので、これは、スコープは、実行時にコールスタックに依存する欠点があります。 参照する場合に対処する必要がある場合は、データ構造への参照を有効にして、スクリプトの寿命のある時点では、参照の寿命を制御することで指摘する必要があります。お使いの参照を含む場合には、自然な範囲のブロックを終了すると、その後にクリーンアップを取得するローカル変数として宣言されています。その値を再割り当てしない限り、そうでなければ、グローバル変数の参照を堅持する。は、衝突の機会が増加するように忘れる。 しかし、心に留める Perlの 真のグローバル変数( )のmanページを参照してくださいperlmodが、さらに、パッケージに(別名名前空間)のメカニズム件名グローバルではありません。パッケージには、メソッドは、アドレスの名前の衝突。として再利用されることを意図している私たちは、このコンポーネントを構築するので、名前を1つのコンポーネントを別の$で自分のプログラムに名前の衝突を使用して定義された$したくないことが重要です。しかし、私のパッケージの詳細をここには行かないよ。 perlmod詳細についてはmanページや、関連の文献を参照してください。 この理由を別のパッケージのモジュールの中で(少なくとも)でお客様のコードを追加し、ほとんどの時間をローカル変数を使用してみてください説明しています。これはあなたのコードの再利用可能なだけでなくて、それも、あなたのコードのときに一緒にこまごましたものを堅持して、複雑になり、長期的で多くの問題を防ぐことができます。 |
![]() |
| ブックマーク |
| スレッドツール | このスレッドを検索 |
| 表示モード | このスレッド |
|
|