Perl日記

日々の知ったことのメモなどです。Perlは最近やってないです。

Perl5.10.1を局所的なところを局所的に使ってみた

今までPerl5.8.6とか8とかの機能しか使ったことなかったので、5.10.1のインストールを機会に覚えてみる。
一番気になったというか、面白そうだったのが「$_のレキシカル化」と「プロトタイプ文字に_追加」だったので使ってみた。

#!/usr/local/bin/perl
# 5010test1.pl
use strict;
use warnings;
use 5.010; # 5.10の機能を有効に

sub p(_) {   # 引数が省略されたら$_を使う
  my $_ = $_;  # p()内レキシカルな$_に入れる
  $_ .= 'day'; # これはレキシカルの方
  say;         # ここもレキシカルの方

  our $_;      # レキシカルをキャンセル
  say;         # 渡ってきた$_
}

my @week = qw/Sun Mon Tue Wed Thu Fri Sat/;

p for @week;
__END__
$ ./5010test1.pl
"our" variable $_ masks earlier declaration in same scope at ./5010test1.pl line 12.
Sunday
Sun
Monday
Mon
Tueday
Tue
Wedday
Wed
Thuday
Thu
Friday
Fri
Satday
Sat

おお。できたけど、ここだけ見たら記号が氾濫していて逆に分かりにくいかな。


とにかく、forとかwhile(<>)とか、$_をループで出してる中で関数呼ぶのには便利そう。