最近我遇到这种方式来过滤掉列表的每一个值:
perl -E 'say grep --$|, 1..10'
13579
Run Code Online (Sandbox Code Playgroud)
它是如何工作的?
我正在调试一个守护进程,我正在尝试使用print语句将信息输出到终端.我的代码的要点是:
#!/usr/bin/env perl
use strict;
use warnings;
use Readonly;
Readonly my $TIMEOUT => ...;
...
while (1) {
print "DEBUG INFO";
...
sleep $TIMEOUT;
}
Run Code Online (Sandbox Code Playgroud)
但是,没有输出它打印到我的终端.为什么是这样?
此命令不向file2输出任何内容:
#!/bin/bash
echo content > file1
tail -f file1 | perl -pe '$_' > file2
Run Code Online (Sandbox Code Playgroud)
虽然这些命令可以正常工作:
tail -f file1 > file2
tail -f file1 | perl -pe '$_'
tail file1 | perl -pe '$_' > file2
tail -f /tmp/file1 | while read line; do echo $line | perl -pe '$_' > /tmp/file2 ; done
Run Code Online (Sandbox Code Playgroud)
谁知道发生了什么?