The UNIX and Linux Forums  


Go Back   UNIXおよびLinuxフォーラム > トップフォーラム > シェルプログラミングとスクリプティング
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午前

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek を搭載 Powered by Google
 
LinkBack スレッドツール このスレッドを検索 スレッドを評価 表示モード
  #1固定リンク)  
Old 2005年8月26日
reggiej reggiej is offline
登録ユーザー
  
 

参加日: 2005年5月
投稿: 27
Perlのグローバル変数

誰か" "なぜプログラミングをするときにすべてのグローバルvarablesてはならない上の講義をすることができます perlの。こんなことやっているけど、それが良い練習ではないと聞いております。
  #2固定リンク)  
Old 2005年8月26日
vertigo23's Avatar
vertigo23 vertigo23 is offline
登録ユーザー
  
 

参加日: 2005年7月
場所:平方フィート、カナダ
投稿: 73
地元としては本当に便利ているのは、純粋に実用的な点から見ると、それほど悪くはグローバルで、だ。ループにしている場合は言ってやるがいいと、各繰り返しで別のデータでは、同じ機能をやってみたい。場合は、関数にデータをフィードには、ローカル(私の)変数を利用する場合は、変数を取得するたびに満ちていないと指摘し、ているのは、ループの前の反復からのデータは保存の繰り返しを汚染することを保証します。

また、ローカル変数を使用すると、再ドルではなく、ループの繰り返しのiについてのがvarには、既にされているデータを心配するような共通の変数名を使用します。
  #3固定リンク)  
Old 2005年8月27日
cbkihong cbkihong is offline Forum Advisor  
アドバイザ
  
 

参加日: 2002年9月
場所:香港、中国
投稿数: 1,624
維持すべきであることは、地元地域は良い家事の練習です。

技術的には、ローカル(自分の)変数を使用して名前空間の衝突を話す必要があるから排除するのが発生し、実際にはいくらかの目的があります無関係です。つまり、必ず、専ら語彙範囲のみに依存する変数のスコープにすることです。そこで、現在のブロック内を直接見て、どこにも他の変数のスコープを伝えることができます。サブルーチンのブロック内から呼び出さ変数は表示されません。だから、


コード:
{  # 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ページや、関連の文献を参照してください。

この理由を別のパッケージのモジュールの中で(少なくとも)でお客様のコードを追加し、ほとんどの時間をローカル変数を使用してみてください説明しています。これはあなたのコードの再利用可能なだけでなくて、それも、あなたのコードのときに一緒にこまごましたものを堅持して、複雑になり、長期的で多くの問題を防ぐことができます。
  #4固定リンク)  
Old 2005年8月29日
reggiej reggiej is offline
登録ユーザー
  
 

参加日: 2005年5月
投稿: 27
のreplysてくれてありがとう。私は地元の多くを使用することの重要性をより良く理解する必要があります。
Closed Thread

ブックマーク

スレッドツール このスレッドを検索
このスレッドを検索

高度な検索
表示モード このスレッド
このスレッド

投稿ルール
あなた ことができない。 新しいスレッドを投稿
あなた ことができない。 返信の投稿
あなた ことができない。 添付ファイルの投稿
あなた ことができない。 自分の投稿を編集

BBコード なる 〜の上に
スマイリー なる 〜の上に
[イメージ] コードは 〜の上に
HTMLコードは、 オフ
トラックバック なる 〜の上に
ピングバック なる 〜の上に
Refbacks なる 〜の上に




すべてGMT -4です。現在の時刻は 08:37午後


提供: vBulletin、著作権© 2000 - 2006、Jelsoft企業株式会社。言語翻訳による電源
vBCredits v1.4著作権© 2007 - 2008 、 PixelFXスタジオ
は、 UNIXおよびLinuxフォーラムのコンテンツ著作権© 1993 〜 2009 。すべての権利を管理しReserved.Ad RedTyger

コンテンツ関連のURLで vBSEO 3.2.0