You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Perl中变量file_size_kb无法共享及正则修饰符错误问题

问题1:子例程无法访问$file_size_kb

你在log_no_reconciliation子例程中直接调用$file_size_kb会报错,因为该变量是用my声明的词法变量,作用域仅局限于声明它的主程序代码块,子例程不在这个作用域内,自然无法访问。

解决方法:将$file_size_kb作为参数传递给子例程:

  • 调用子例程时传入参数:log_no_reconciliation($pdf_file, $file_size_kb);
  • 修改子例程定义,新增参数接收逻辑:
sub log_no_reconciliation {
    my ($file, $size_kb) = @_;
    open my $log_fh, '>>', 'reconciliation.log' or die "Could not open log file: $!";
    print $log_fh "No reconciliation performed for $file because its size is $size_kb KB.\n";
    close $log_fh;
}
问题2:未知正则表达式修饰符"/v"和"/e"错误

这个错误出现在#Path to the PDF file下方的代码行,核心原因是你给$pdf_file赋值时漏加了引号,导致Perl把路径字符串当成正则表达式解析(比如写成my $pdf_file = path/to/your/file.pdf;而非带引号的形式)。Perl会将path/to/your/file.pdf识别为m/path/to/your/file.pdf/,若路径最后一个/后存在v、e等字符,会被当作正则修饰符,而Perl不支持这类修饰符,因此报错。

解决方法:确保路径字符串被单引号或双引号包裹,就像你提供的示例代码一样:

my $pdf_file = 'path/to/your/file.pdf';

若路径包含空格等特殊字符,可使用双引号包裹并转义,或用单引号保持内容原样(单引号内的字符不会被转义)。

修正后的完整代码
# Path to the PDF file
my $pdf_file = 'path/to/your/file.pdf';

# Size threshold in kilobytes
my $size_threshold_kb = 1_000_000;

# Get the file size in bytes
my $file_size_bytes = -s $pdf_file;

# Convert bytes to kilobytes
my $file_size_kb = $file_size_bytes / 1024;

# Check if the file size is less than the threshold
if ($file_size_kb < $size_threshold_kb) {
    # Perform PDF impression reconciliation
    reconcile_pdf_impression($pdf_file);
} else {
    # Log that no reconciliation happened
    log_no_reconciliation($pdf_file, $file_size_kb);
}

sub reconcile_pdf_impression {
    my ($file) = @_;
    # Replace with actual reconciliation logic
    print "Performing PDF impression reconciliation for $file.\n";
}

sub log_no_reconciliation {
    my ($file, $size_kb) = @_;
    open my $log_fh, '>>', 'reconciliation.log' or die "Could not open log file: $!";
    print $log_fh "No reconciliation performed for $file because its size is $size_kb KB.\n";
    close $log_fh;
}

内容的提问来源于stack exchange,提问作者xantana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 21:34:51