【问题标题】:What is the use -I option in perlperl中的-I选项有什么用
【发布时间】:2017-03-27 05:15:30
【问题描述】:

在 perl 程序中我发现了这一行 #!/usr/bin/perl -I Directory_name 所以我在网上搜索了 perl 中的选项-I,但我没有找到正确的解释。谁能告诉我这个选项有什么用?

【问题讨论】:

标签: perl


【解决方案1】:

您的问题有问题,不是您只是在问一个可研究的问题,而是您在以下位置指定了 file_name:

#!/usr/bin/perl -I file_name

上述内容不正确,因为 -I 在给定目录中搜​​索包并且您正在指定文件名。以下开关将起作用,但每个开关执行不同的功能。

#!/usr/bin/perl -i file_name
#!/usr/bin/perl -I DIR

-i-I 在 perl 中是有区别的。

如此简短的回答:

-i:就地修改您的输入文件(备份 原来的)。无需 {copy, 即可方便地修改文件, 删除原始,重命名} 过程。

-I:-I 指定的目录被附加到模块的搜索路径(@INC)

更多详情来源perlrun

【讨论】:

    【解决方案2】:

    -I 包含一个用于搜索包的目录。见perldoc perlrun

    这里是一个例子,注意我们use Bar而不是use Foo::Bar

    test.pl
    Foo/Bar.pm
    

    test.pl

    #!/usr/bin/perl -I Foo
    
    use warnings;
    use strict;
    
    use Bar qw( frobnicate ); # Foo/Bar.pm
    
    my $output =  frobnicate('hello');
    print $output . "\n";
    

    Foo/Bar.pm

    package Bar;
    require Exporter;
    @ISA = qw(Exporter);
    @EXPORT_OK = qw(munge frobnicate);  # symbols to export on request
    1;
    
    sub munge {
        my ($txt) = @_;
        return join '*', sort split //, $txt;
    }
    
    sub frobnicate {
        my ($txt) = @_;
        return join '....', sort split //, $txt;
    }
    

    输出

    ./test.pl
    e....h....l....l....o
    

    【讨论】:

      【解决方案3】:

      我们还可以使用以下命令找到 perl 命令行选项的简短描述。所以不需要安装perldoc。

      perl --help 
      

      上述命令对手册页中可能找不到的每个选项进行了简短描述。

      【讨论】:

        猜你喜欢
        • 2013-09-02
        • 2012-02-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-23
        • 2013-03-21
        • 2010-12-17
        相关资源
        最近更新 更多