linux - 将 perl 结果输出到文件中

标签 linux bash perl

我有一个 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/

相关文章:

perl - 在 Mojolicious 中找不到 Controller

perl - 如何使用 Perl 轻松批量重命名文件?

python - 在python中任意时间捕获用户输入

linux - tr -s 无法压缩连续空格

bash - 从 XML 文件中删除特定的重复行

linux - 从变量中提取文本

c++ - 如何检测重写虚方法声明中的 "missing" 'virtual' 说明符?

linux - 从每行中去掉 ^A 个字符

bash - 如何在 IntelliJ 中设置 bash 解释器路径

mysql - 如何匹配两个数据库表中的相关值?