#!/usr/bin/env perl
use strict;
use warnings;
use autodie qw{:all};
my $tail_cmd = 'tail -f ./pm_test_file_to_tail';
my @tail_captures;
print '*** Start reading from $tail_pipe at ', time, "\n";
my $tail_pid = open my $tail_pipe, '-|', $tail_cmd;
{
local $SIG{INT} = sub {
kill INT => $tail_pid if kill 0 => $tail_pid;
waitpid $tail_pid => 0;
};
while (<$tail_pipe>) {
push @tail_captures, $_;
}
}
print '*** Stop reading from $tail_pipe at ', time, "\n";
# Possibly process data captured, e.g. for demo only
$_ = uc for @tail_captures;
print '*** Captured via $tail_pipe:', "\n";
print for @tail_captures;
####
$ cat > pm_test_file_to_tail
line 1
line 2
line 3
####
$ cat >> pm_test_file_to_tail
line 4
line 5
####
$ pm_test_tail_pipe.pl
*** Start reading from $tail_pipe at 1371707519
####
line 6
line 7
####
^C*** Stop reading from $tail_pipe at 1371707542
*** Captured via $tail_pipe:
LINE 1
LINE 2
LINE 3
LINE 4
LINE 5
LINE 6
LINE 7
####
line 8
line 9
####
$ cat pm_test_file_to_tail
line 1
line 2
line 3
line 4
line 5
line 6
line 7
line 8
line 9