【问题标题】:read_file 'File::Slurp' - sysopen: No such file or directoryread_file 'File::Slurp' - sysopen:没有这样的文件或目录
【发布时间】:2012-08-25 14:11:19
【问题描述】:

这里有什么问题?

我正在尝试显示现有文件的内容:

perl -MFile::Slurp -e 'print File::Slurp->read_file("/tmp/001.jpg", { binmode => ":raw" } ) if -e "/tmp/001.jpg"; '

我得到了错误:

read_file 'File::Slurp' - sysopen: No such file or directory

文件存在,print 只执行if -e "/tmp/001.jpg"

【问题讨论】:

  • 如果没有括号,您对-e 的使用可能会模棱两可。所以,试试if (-e "/tmp/001.jpg")
  • 带括号的结果相同:|

标签: perl readfile fileslurp


【解决方案1】:

通过File::Slurp::read_file而不是File::Slurp->read_file调用函数。在后一种情况下,Perl 的对象系统发挥作用,传递给read_file 的第一个参数将是-> 之前的东西——这意味着它的第一个参数将是字符串"File::Slurp",而不是你真正想要的文件名阅读。

这也是您在要从中创建新实例的包上调用 new 的原因。

【讨论】:

  • 其实-MFile::Slurp 会导出read_file 函数,所以你根本不需要File::Slurp:: 部分。 (不过,它不会受到伤害。)
猜你喜欢
  • 1970-01-01
  • 2013-05-13
  • 2021-06-24
  • 2015-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-27
相关资源
最近更新 更多