我有一个 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
最佳答案
这只是一个警告,不是错误。您在运行该命令时会看到它,因为“-w”是警告编译指示。
你也可以把它放在你的 shebang 的末尾
#!/usr/bin/perl -w
或“使用警告;”。无论如何,警告只是说它没有值(value)。看起来您正在阅读最后一个日志以查看谁最后登录,输出可能会有所不同,具体取决于您使用的操作系统。我会确认它按预期工作并获得正确的值。
使用“use strict;”也是最佳做法。
关于linux - 将 perl 结果输出到文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33865443/