あなたが言うように、@last_id[0]
間違っているので、そうあるべきです$last_id[0]
。しかし、これはあなたが見ている問題を引き起こしません。
last_id.txt
プログラムは、現在の作業ディレクトリでもない限り、Perlソースファイルと同じディレクトリを検索しないことに注意してください。
まず最初に、このtie
行で使用されているエラー変数を次のように変更する必要があります$!
tie my @last_id, 'Tie::File', 'last_id.txt'
or die "Unable to open this file: $!";
変数$i
には有用なものが何も含まれていないためです。これにより、の失敗の理由がわかります。これは、そのようなファイルまたはディレクトリがないtie
こと以外の理由である可能性があります。
またuse strict
、use warnings
プログラムの開始時に、見落としがちな単純なエラーにフラグを立てる必要があります。
最後に、ファイル名に絶対パスを追加して、ファイル名を完全修飾してみてください。これにより、プログラムがデフォルトで間違ったディレクトリを検索するという問題を回避できます。
アップデート
ファイルへの書き込みアクセス権がないことが問題である場合は、読み取り専用で開くことで修正できます。
定数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: $!";