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

Perl中如何使用Log::Log4perl模块为脚本添加日志功能

Perl两数相加脚本问题修复与Log::Log4perl集成方案

原脚本存在的问题

  • 取值逻辑冲突:代码先后使用标准输入、命令行参数两种方式给$num1、$num2赋值,逻辑冗余会导致参数取值不符合预期
  • 缺少参数合法性校验:未对GetOptions的执行结果、传入参数的合法性做判断,异常场景下会直接报错退出
  • Log::Log4perl未做初始化调用,也没有实例化日志对象输出日志,因此日志功能无法生效

修复后完整代码(以命令行传参场景为例)

use strict;
use warnings;
use Getopt::Long;
use Log::Log4perl qw(:easy);

# 初始化Log4perl,简易配置:输出到终端,日志级别为INFO,格式包含时间、级别、日志内容
Log::Log4perl->easy_init({
    level   => $INFO,
    layout  => "%d{yyyy-MM-dd HH:mm:ss} %p - %m%n"
});

# 获取日志实例
my $logger = Log::Log4perl->get_logger();

my ($num1, $num2);
# 解析命令行参数
my $res = GetOptions(
    "numone=i" => \$num1,
    "numtwo=i" => \$num2
);

# 校验参数解析结果
if (!$res || !defined $num1 || !defined $num2) {
    $logger->error("参数传入错误,请使用格式:perl $0 --numone 整数 --numtwo 整数");
    exit 1;
}
$logger->info("成功读取参数:num1=$num1,num2=$num2");

my $add = $num1 + $num2;
$logger->info("两数相加计算结果为:$add");
print $add."\n";

运行说明

执行脚本时传入对应整数参数即可,示例命令:
perl add.pl --numone 12 --numtwo 34
运行后会先输出INFO级别的日志信息,最后打印计算结果。如果参数传入错误,会输出ERROR级别的报错提示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:15:07