Changes between Initial Version and Version 1 of Perl


Ignore:
Timestamp:
07/31/06 22:52:47 (18 years ago)
Author:
atzm
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Perl

    v1 v1  
     1[[PageOutline]] 
     2 
     3= Perl = 
     4== Python で言うところの getattr してみる == 
     5ていうかむしろ eval してるだけ. 
     6eval じゃなくてホントに getattr したいんだけど,どうやってやるんだろう? 
     7 
     8 * {{{hoge.pm}}} 
     9{{{ 
     10#!perl 
     11use strict; 
     12use warnings; 
     13 
     14package hoge; 
     15 
     16our $foo = "hogeraccho"; 
     17 
     181; 
     19 
     20__END__ 
     21}}} 
     22 * {{{unko.pm}}} 
     23{{{ 
     24#!perl 
     25use strict; 
     26use warnings; 
     27 
     28package unko; 
     29 
     30our $foo = "unkokko"; 
     31 
     321; 
     33 
     34__END__ 
     35}}} 
     36 * {{{modules}}} ファイル 
     37{{{ 
     38unko 
     39hoge 
     40foo 
     41}}} 
     42 * {{{main.pl}}} 
     43{{{ 
     44#!perl 
     45#!/usr/bin/env perl 
     46 
     47use strict; 
     48use warnings; 
     49use Symbol; 
     50 
     51my $sym = gensym; 
     52open($sym, "modules"); 
     53while (my $module = <$sym>) { 
     54    chomp $module; 
     55    next unless $module; 
     56 
     57    eval { 
     58        require $module . '.pm'; 
     59        my $foo = eval("\$${module}::foo"); 
     60        print "\$${module}::foo = $foo\n"; 
     61    }; 
     62    warn "WARNING: $@" if $@; 
     63} 
     64close($sym); 
     65}}} 
     66 * 実行結果 
     67{{{ 
     68#!sh 
     69bash$ perl main.pl 
     70$unko::foo = unkokko 
     71$hoge::foo = hogeraccho 
     72WARNING: Can't locate foo.pm in @INC ... 
     73}}}