簡體   English   中英

如何使用-M標志通過命令行中的相對路徑加載Perl模塊?

[英]How do i use -M flag to load a perl module using its relative path from command line?

我有以下代碼:demo.pm

#! user/local/bin/perl
use strict;
use warnings;
package demo;
sub doit{
  print("Inside DoIt\n");
  my $a = shift();
  my $b = shift();
  print("$a\n");
}

文件demo.pm位於其他位置,想要使用相對路徑來獲取模塊並運行它

在Linux命令中使用以下命令會引發錯誤:perl -M / sub1 / sub2 / demo.pm -e'demo :: doit('arg1')'

錯誤:
-e第0行,“ use / sub1 /”附近的語法錯誤-e的執行由於編譯錯誤而中止。

如果您有絕對路徑,並且希望所有腳本都找到該模塊:

export PERL5LIB="${PERL5LIB:+"$PERL5LIB:"}/path/to/lib"  # In your login script.
script

如果您有絕對路徑,並且希望執行一次腳本來查找模塊:

PERL5LIB="${PERL5LIB:+"$PERL5LIB:"}/path/to/lib" script

如果您有一個模塊安裝在相對於腳本的目錄中:

use FindBin qw( $RealBin );
use lib "$RealBin/../lib";

在您的特定情況下:

perl -Mlib=/sub1/sub2 -Mdemo -e'demo::doit("arg1")'

避免使用-I 它不包括諸如PERL5LIB和lib.pm這樣的相關PERL5LIB Dirs,因此具有特定於Arch的組件的模塊將無法加載。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM