そして、それは良い考えですか?私はスクリプトを書きました、そしてそれはいくつかの人気のないモジュールを使用します。インストールには時間がかかるので、アプリケーションと一緒に配布したほうがいいと思いました。どうやってやるの?
2 に答える
inc
ディストリビューションのディレクトリに依存関係を出荷するのが通例です。これについては、 「インストール」せずに PerlIO Perl パッケージをリンクし、欠落しているモジュールを CPAN から自動的にインストールする方法で説明しました。
質問は漠然としているので、コードの代わりにアドバイスをお願いします。インストールはまったく必要ないと仮定します。解凍した依存関係をinc
ディレクトリに入れます。で実行時にアクセスしますuse lib 'inc';
。
それで全部です。
もちろん。Apache ライセンスの下で、モジュールを再配布できます。
関数をインポートしないこれらのオブジェクト指向モジュールはありますか? その後、何もする必要はありません。メイン プログラムからを削除し、メイン プログラムの最後に右をuse My::Module;
追加します。My::Module
オブジェクト指向コードを使用しておらず、@EXPORT
配列を介して関数をエクスポートしている場合は、追加の対策を講じる必要があります。
ここでは、関数をメイン プログラムLocal::Foo->import qw(foo)
にインポートするために追加する必要がありました。また、モジュール内のエクスポート宣言の前後で BEGIN を使用する必要がありました。そうしないと、私のメイン プログラムはインポートするものが何も見つかりません。foo
@EXPORT
@EXPORT_OK
オリジナルプログラム:
主なプログラム:
#! /usr/bin/env perl
# test.pl
use warnings;
use strict;
use Local::Foo;
use feature qw(say);
my $bar = foo("bar");
say "Bar is '$bar'";
モジュール ローカル::Foo
#! /usr/bin/env perl
# Local/Foo.pm
#
package Local::Foo;
use Exporter qw(import);
our @EXPORT = qw(foo);
sub foo {
my $value = shift;
return "FOOOOOO $value";
}
1;
複合プログラム
#! /usr/bin/env perl
# test.pl
use warnings;
use strict;
# use Local::Foo;
# Force importation of `foo`
Local::Foo->import qw(foo);
use feature qw(say);
my $bar = foo("bar");
say "Bar is '$bar'";
#-----------------------------------------------------------------------
#! /usr/bin/env perl
# Local/Foo.pm
#
package Local::Foo;
# Add BEGIN clause to module
BEGIN {
use Exporter qw(import);
our @EXPORT = qw(foo);
}
sub foo {
my $value = shift;
return "FOOOOOO $value";
}
1;