gpt4 book ai didi

perl - 无法理解 Tie::File 失败的原因

转载 作者:行者123 更新时间:2023-12-02 07:41:13 25 4
gpt4 key购买 nike

我有以下代码

#!/usr/bin/perl
use Tie::File;

tie my @last_id, 'Tie::File', 'last_id.txt' or die "Unable to open this file !$i";
print @last_id[0];

exit;

还有一个名为 last_id.txt 的文件,里面有类似的东西

1
2
3
4
5
6

当我运行程序时,没有任何输出。我尝试了 $last_id[0] 但仍然一无所获。 :/

我安装了最新的 ActivePerl。

编辑:

现在我得到了Unable to open this file 消息,但该文件存在于与程序源文件相同的目录中。

最佳答案

正如您所说,@last_id[0] 是错误的,应该是 $last_id[0]。但这不会导致您看到的问题。

请注意,程序不会在与 Perl 源文件相同的目录中查找 last_id.txt,除非它也是当前工作目录。

首先,您应该像这样将 tie 行中使用的错误变量更改为 $!

tie my @last_id, 'Tie::File', 'last_id.txt'
or die "Unable to open this file: $!";

因为变量 $i 没有任何用处。这将告诉您tie 失败的原因,可能不是没有这样的文件或目录

您还应该在程序开始时使用 strict使用警告,因为这会标记容易被忽略的简单错误。

最后,尝试通过添加绝对路径来完全限定文件名。这将解决程序默认查找错误目录的问题。


更新

如果问题是您没有对该文件的写入权限,那么您可以通过以只读方式打开它来修复它。

你需要 Fcntl 模块来定义 O_RDONLY 常量,所以把它放在程序的顶部

use Fcntl 'O_RDONLY';

然后 tie 语句如下所示

tie my @last_id, 'Tie::File', 'last_id.txt', mode => O_RDONLY
or die "Unable to open this file: $!";

关于perl - 无法理解 Tie::File 失败的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11045403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com