タグ

importに関するelecstaのブックマーク (5)

  • perlでモジュールのimportとunimport – taichino.com

    perlでモジュールをインポートする時に何気なく使ってるuse Hogeですが、調べてみると少し思ってたのと違ってたので、調べた事をメモしておきます。 use Hogeは実は標準関数useの呼出しを行っていて、その内容は以下と同等です。 BEGIN { require Hoge; # 中で更にdo Hoge.pmを呼び出す import Hoge; # Hoge::importを実行 } require Hogeは対応する.pmファイルを読み込み、importはHoge::importを呼び出します。requireされた時点でロードは完了して、Hoge.pmに定義されている関数等は使用可能です。じゃあimportで何をしてるかというと、読み込み元パッケージの名前空間にHoge.pm内の関数に対するエイリアスを定義する為に使われる事が多いようです。 逆にモジュールをunimportしたい場合

  • parent.pm読んでみた - 新だるろぐ跡地

    深夜にバカやってないで会社でバカやりましょう、いつも通り。 自分がクビにならないのが常々不思議である。 parent.pm 中にはメソッドはimportが1個のみ、行数も少ない。これなら軽く読める。 package parent; use strict; use vars qw($VERSION); $VERSION = '0.221'; sub import { my $class = shift; my $inheritor = caller(0); if ( @_ and $_[0] eq '-norequire' ) { shift @_; } else { for ( my @filename = @_ ) { if ( $_ eq $inheritor ) { warn "Class '$inheritor' tried to inherit from itself\n"; }

    parent.pm読んでみた - 新だるろぐ跡地
  • Exporter を使ったモジュールの継承 - daily dayflower

    おまえは何を言っているんだみたいな話だったらすみません。 たとえば,foo() という関数を export している ModA というモジュールがあるとします。 package ModA; use strict; use warnings; use base qw( Exporter ); our @EXPORT = qw( foo ); sub foo { warn sprintf '%s::foo called', __PACKAGE__; } 1; こいつをたとえば #!/usr/bin/perl use strict; use warnings; use ModA; foo(); のように使うと, ModA::foo called at ModA.pm line 12.のように出ます。 ここまでは当たり前。 use ModB したら ModA::foo() を呼び出せるようにしたい

    Exporter を使ったモジュールの継承 - daily dayflower
  • [Perl]Exporterとimportじゃなくて、gotoとcaller - Practice of Programming

    某社の後輩に下記のブログの件は、普通はどうやって解決するのかと聞かれた(てか、後輩のブログだったようだ、なぜ言わないw)。 http://d.hatena.ne.jp/foosin/20090331/1238509129 僕も以前、悩んだことがあり、Exporterのドキュメントを見たら、まんま書いてたという。export_to_level。 sub import { strict->import; warnings->import; __PACKAGE__->export_to_level(1, @_); } で、まぁ、おしまい。 Perl のExportの仕組みは、perldoc -f use を見るとわかりやすいんだけど。 BEGIN { require Module; import Module LIST; } LIST部分が、use Module (...)の、(...)の部分。

    [Perl]Exporterとimportじゃなくて、gotoとcaller - Practice of Programming
  • importメソッドが勝手に生やされて困る場合の対応 - Practice of Programming

    また、バージョンあげちゃいました。ので、下記の実装は最新版(0.06)とは若干異なっておりますが、大体同じ感じです。 久々にUtil::Anyのバージョン上げました。 http://search.cpan.org/~ktat/Util-Any-0.05/lib/Util/Any.pm Util::Anyを継承したモジュール内でPerl6::Export::Attrsを使うと動かなくなるという報告が来たためです。 Perl6::Export::Attrs は、attributeで関数のexportが簡単にできるものです。Util::Anyを継承しつつ、そのモジュール内に、ユーティリティ関数を実装するのに使ったら、こけちゃったってことのようです。 これは、Perl6::Export::Attrs が、呼び出し元にimportメソッドを作成しちゃうせいです。 コードは、以下のような感じですね。

    importメソッドが勝手に生やされて困る場合の対応 - Practice of Programming
  • 1