1

そして、それは良い考えですか?私はスクリプトを書きました、そしてそれはいくつかの人気のないモジュールを使用します。インストールには時間がかかるので、アプリケーションと一緒に配布したほうがいいと思いました。どうやってやるの?

4

2 に答える 2

4

incディストリビューションのディレクトリに依存関係を出荷するのが通例です。これについては、 「インストール」せずに PerlIO Perl パッケージをリンクし、欠落しているモジュールを CPAN から自動的にインストールする方法で説明しました。

質問は漠然としているので、コードの代わりにアドバイスをお願いします。インストールはまったく必要ないと仮定します。解凍した依存関係をincディレクトリに入れます。で実行時にアクセスしますuse lib 'inc';

それで全部です。

于 2012-05-08T08:42:11.160 に答える
3

もちろん。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;
于 2012-05-08T02:22:49.000 に答える