[Tokyo-pm] これはどう動くの?
Tatsuhiko Miyagawa
miyagawa @ edge.co.jp
2004年 8月 26日 (木) 05:26:51 CDT
宮川です。
On Thu, 26 Aug 2004 19:00:48 +0900
Keiichi Okabe <okabek at beige.ocn.ne.jp> wrote:
> sub init_sh
> {
> my $fname = shift;
> local $/ = "";
> open my $fh, $fname or die $!;
> %lslr = map {sub {substr(shift,0,-1), \@_}->(split /\n/)} <$fh>;
> }
>
> という箇所なんですが,ls -lR で作成したファイルをハッシュに
> いれようとしていると思うのですが,最後の行はどう動くのでしょうか.
map も sub もつかわずに書くと、
sub init_sh {
my $fname = shift;
local $/ = "";
open my $fh, $fname or die $!;
%lslr = ();
for (<$fh>) {
my @lines = split /\n/;
my $head = substr(shift @lines, 0, -1);
$lslr{$head} = \@lines;
}
}
つまり
foo:
a
b
c
bar:
d
e
f
ってのを、
%lslr = (
foo => [ "a", "b", "c" ],
bar => [ "d", "e", "f" ],
);
っていうハッシュにしてるのですね。
--
Tatsuhiko Miyagawa <miyagawa at livedoor.jp>
Tokyo-pm メーリングリストの案内