Perl:如果没有包或对象引用,则无法调用方法“catfile”

时间:2015-01-28 14:44:54

标签: perl file-io perl-module cat

我试图使用' cat file'在我的Perl模块中,如下所示,

my $batch_dir = '/home/lsubramaniyam/xxx';
    my $receive_file = $batch_dir->catfile("Recieve_file.txt");

但是,在执行脚本时,我收到错误

Can't call method "catfile" without a package or object reference

我已经包含了与文件句柄和OOPS相关的包,

 use IO::All;
    use IO::Socket;
    use IO::Socket::SSL;
    use Moo;
    use MooX::HandlesVia;
    use MooX::Options (
        protect_argv       => 0,
        prefer_commandline => 1,
    );
    use MooX::Types::MooseLike::Base
        qw(Bool Enum HashRef Int InstanceOf Maybe Str);
    use File::Spec;

请帮助我继续进一步的步骤。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:1)

您应该仔细阅读documentation。第4和第5行:

use File::Spec;
$x=File::Spec->catfile('a', 'b', 'c');

答案 1 :(得分:1)

您在此处调用catfile()作为方法。只能在类或对象上调用方法。 $batch_dir只是一个字符串。你不能在字符串上调用方法(这就是你的错误所说的)。

File::Spec的文档显示catfile()被称为类方法。所以你想要这样的东西:

my $batch_dir = '/home/lsubramaniyam/xxx';
my $receive_file = File::Spec->catfile($batch_dir, 'Recieve_file.txt');