Changes between Version 30 and Version 31 of Perl
- Timestamp:
- 01/25/07 11:45:59 (18 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Perl
v30 v31 594 594 }}} 595 595 596 === DATA の罠 === 597 * hoge.pm 内の DATA の position が 1 回目の new で EOF に到達するため,2 回目の new では $self->{'data'} が空になる. 598 {{{ 599 #!perl 600 package hoge; 601 602 sub new { 603 my $class = shift; 604 my @data = <DATA>; 605 return bless {'data' => \@data}, $class; 606 } 607 608 sub hoge { 609 my $self = shift; 610 return $self->{'data'}; 611 } 612 613 1; 614 615 __DATA__ 616 hoge 617 hage 618 hige 619 }}} 620 {{{ 621 #!perl 622 use hoge; 623 624 my $hoge1 = new hoge(); 625 print "*** 1\n"; 626 print @{$hoge1->hoge()}; 627 628 629 my $hoge2 = new hoge(); 630 print "*** 2\n"; 631 print @{$hoge2->hoge()}; 632 }}} 633 * 何度も new できるようにするためには,以下のようにする必要がある. 634 {{{ 635 @@ -5,7 +5,9 @@ 636 637 sub new { 638 my $class = shift; 639 + my $pos = tell DATA; 640 my @data = <DATA>; 641 + seek DATA, $pos, 0; 642 return bless {'data' => \@data}, $class; 643 } 644 }}} 645 596 646 == スクリプトを直接実行した時だけ呼ぶコード == 597 647 * とどのつまりは Python で言うところの {{{if __name__ == "__main__":...}}} .