【问题标题】:perl - File::Basename->fileparse returns "File::Basename"perl - File::Basename->fileparse 返回 "File::Basename"
【发布时间】:2013-07-24 15:43:34
【问题描述】:

由于某种原因,我的代码正在做这个奇怪的事情,fileparse 只打印(字面意思)File::Basename

 use strict;
 use warnings 'all';
 use File::Basename;

 ...

 my $fileName = File::Basename->fileparse($filePath);
 print("$filePath\n");
 print("$fileName\n");

输出是:

a/b/c/d.bin
File::Basename

我做错了什么?

【问题讨论】:

    标签: perl fileparse


    【解决方案1】:

    fileparse 不是方法;这是一个功能。这个函数是默认导出的,所以你真的想做

    use File::Basename;
    my $fileName = fileparse($filePath);
    

    您已经使用 is 作为方法调用。这里File::Basename->fileparse($filePath)相当于

    fileparse("File::Basename", $filePath)
    

    因为在方法调用中,invocant(通常是一个对象;这里是包名)成为第一个参数。这是错误的,因为它将"File::Basename" 视为解析路径,并将以下参数视为有效后缀列表。

    如果您想使用 fileparse 函数而不将其导出到您的命名空间,您可以

    use File::Basename (); # note empty parens that supress the import
    File::Basename::fileparse(...); # use fully qualified name
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-21
      • 1970-01-01
      • 2019-05-27
      • 2021-02-23
      • 2014-03-07
      • 1970-01-01
      相关资源
      最近更新 更多