Perl不会转到错误部分

md1*_*980 -2 error-handling perl die

我有一个类似下面的Perl声明

seek DCMFReport.txt, $offset, 0 or die "Report seek error, offset:$offset - $!";
Run Code Online (Sandbox Code Playgroud)

当它到达上面的行时,我得到一个"参数错误",但我没有看到打印出来的文件中的文字.我希望看到"报告寻找错误......"打印出来.这是否意味着即使语句引发错误,代码也没有进入die部分?

sim*_*que 5

因为seek需要open首先需要文件句柄.文件名与文件句柄不同.

use strict;
use warnings;

my $offset = 1;

open my $fh, '<', 'DCMFReport.txt' or die $!;
seek $fh, $offset, 0 or die "Report seek error, offset:$offset - $!";
Run Code Online (Sandbox Code Playgroud)

or die如果您使用字符串作为第一个参数,它将为您提供错误消息,因为seek操作失败,因为该值不是文件句柄.这是传递不存在的东西的其他东西.

文件说:

FILEHANDLE可以是一个表达式,其值给出文件句柄的名称.

字符串是一个表达式,因此它尝试对具有该名称的文件句柄进行操作.