我有一个perl脚本,当我使用perl文件名运行时工作正常,但是当我使用命令时
perl -w logint > logintime.html
我收到此错误
Use of uninitialized value $days in multiplication (*) at logint line 5, <LAST> line 3.
从第3-47行重复此事
这是perl代码
#!/usr/bin/perl
open LAST, "last |";
while (<LAST>) {
if (($name,$days,$hours,$mins) = /^(\w+).+\((?:(\d+)\+)?(\d+):(\d+)/) {
$TIMES{$name} += 1440 * $days + 60 * $hours + $mins;
}
}
foreach (sort keys %TIMES) {
print "$_ $TIMES{$_}\n";
}
这就是我试图输出它的方式。
#!/bin/bash
echo $HDR > ~/public_html/logintime.html
perl -w logint > logintime.html
echo $FTR >> ~/public_html/logintime.html
答案 0 :(得分:1)
这只是一个警告,这不是错误。当你运行该命令时,你会看到它,因为'-w'是警告pragma。
你也可以把它放在shebang的末尾
#!/usr/bin/perl -w
或'使用警告;'。无论如何,警告只是说它没有价值。看起来您正在读取上次登录以查看上次登录的人,输出可能会有所不同,具体取决于您所使用的操作系统。我会确认它按预期工作并获得正确的值。
最佳做法是使用'use strict;'。