関数順 インデックス
目的別 インデックス

構文
 
 local 変数

返り値
 
 変数値

説明

  • 変数の値を一時的に避難して,新しい値に上書きします。
  • ローカル変数として使う場合には通常myを使う方が高速かつ安全です。
  • $,などの特殊変数に対してはmyを使うことができないので,この場合はlocalを使用します。

使用例

特殊変数$,をローカル化して一時的に書き換える
#!/usr/bin/perl
use strict;
use warnings;

my @foo = (10, 20, 30);
{
  local $, = "\n";
  print @foo;
  print "\n";
}
print "=====\n";
print @foo;
print "\n";
変数$valをローカル化する(local)
#!/usr/bin/perl
use strict;
use warnings;

our $val = 0; # (A)
print "main1: $val\n"; # 0 (A)の変数
foo();
print "main2: $val\n"; # 0 (A)の変数

sub foo {
  local $val = 1; # (B)
  print "foo1 : $val\n"; # 1 (B)の変数
  bar();
}

sub bar {
  print "bar  : $val\n"; # 1 (B)の変数
}
変数$valをローカル化する(my)
#!/usr/bin/perl
use strict;
use warnings;

our $val = 0; # (A)
print "main1: $val\n"; # 0 (A)の変数
foo();
print "main2: $val\n"; # 0 (A)の変数

sub foo {
  my $val = 1; # (B)
  print "foo1 : $val\n"; # 1 (B)の変数
  bar();
}

sub bar {
  print "bar  : $val\n"; # 0 (A)の変数
}