我正在编写一个脚本来监听日志文件的更改并采取适当的行动.目前我正在使用open my $fh, "tail -f $logfile |";但理想情况下我不想使用系统调用.
我已经尝试过File :: Tail但它的最小间隔为1秒(我尝试传递较少,但默认为1秒,即使我传递0).我已经检查了它的来源,它似乎使用sleep(),它采用整数.在我尝试自己编写之前,还有其他选择吗?
谢谢.
我有一个哈希引用数组.散列中的日期字段存储在纪元中.在返回数组之前,我必须将其格式化为人类可读.以下是我的代码:
for my $post (@sorted) {
$post->{date} = format_time($post->{date});
push @formatted, $post;
}
Run Code Online (Sandbox Code Playgroud)
我试过了
my @formatted = map {$_{date} = format_time($_{date})} @sorted;
Run Code Online (Sandbox Code Playgroud)
除{日期}之外的所有字段都将被删除.
有更聪明的方法吗?
谢谢
我写了一个脚本,我在UTF-8编码的HTML文件中啜饮,然后将其解析为树HTML::Tree.问题是解析后的字符串不再标记为UTF-8.
由于_utf8_on()不建议设置标志的方式,我正在寻找正确的方法.
我的简化代码示例:
#!/usr/bin/perl
use strict;
use warnings;
use 5.010;
use utf8::all;
use autodie;
use HTML::Tree;
use Encode qw/is_utf8/;
my $file = shift;
my $tree;
if ($file) {
my $content = slurp_in( 'file' => $file );
$tree = html_tree('content' => $content);
} else {
die "no file";
}
my $title = $tree->look_down(_tag => 'title');
$title = $title->as_HTML('');
if ( is_utf8( $title ) ) {
say "OK: $title";
} else {
say "NOT OK: $title";
}
## …Run Code Online (Sandbox Code Playgroud) 我在读取文件时遇到错误,下面是脚本.
#!/bin/bash
$file = "SampleLogFile.txt"; #--- line 2
open(MYINPUTFILE,$file); #--- line 3
while(<**MYINPUTFILE**>) {
# Good practice to store $_ value because
# subsequent operations may change it.
my($line) = $_;
# Good practice to always strip the trailing
# newline from the line.
chomp($line);
# Convert the line to upper case.
print "$line" if $line = ~ /sent/;
}
close (MYINPUTFILE);
Run Code Online (Sandbox Code Playgroud)
输出:
PerlTesting_New.ksh [2]:=:未找到
PerlTesting_New.ksh [3]:第3行的语法错误:`('意外
知道问题是什么吗?
perl ×4
arrays ×1
hash ×1
html-parsing ×1
html-tree ×1
linux ×1
syntax-error ×1
tail ×1
utf-8 ×1