$ perl -E 'my $var = "123\n"; say $var;' 123 $ perl -E 'my $var = "123\n"; say "|$var|";' |123 | #### #!/usr/bin/env perl use strict; use warnings; use constant { INODE => 1, FSIZE => 7, MTIME => 9, }; use Cwd 'cwd'; use File::Find; use Time::Piece; my $wDirectory = cwd(); find(\&wanted, $wDirectory); transform($wDirectory); display(); { my ($data_for, $ignore_re, $display_fmt); BEGIN { $ignore_re = qr{(?mx: \. (?: pl | swp \z ) )}; $display_fmt = "%-6s %3d %6d %-10s %17d [%d]\n"; } sub wanted { return unless -f $File::Find::name; return if $_ =~ $ignore_re; $data_for->{$File::Find::name} = { dir => $File::Find::dir, file => $_, stat => [ stat _ ], }; return; } sub transform { my ($cwd) = @_; for my $path (keys %$data_for) { my $data = $data_for->{$path}; my $t = localtime($data->{stat}[MTIME]); my $date = $t->ymd(); $date =~ y/-//d; my $rel_dir = join substr($data->{dir}, length $cwd), qw{. /}; @$data{qw{date rel_dir inode size mtime}} = ($date, $rel_dir, @{$data->{stat}}[INODE, FSIZE, MTIME]); } return; } sub display { my @display_fields = qw{file size date rel_dir inode mtime}; printf $display_fmt, @{$data_for->{$_}}{@display_fields} for sort { $data_for->{$a}{mtime} <=> $data_for->{$b}{mtime} } keys %$data_for; return; } } #### f1 0 20221013 ./d1/d3_3/ 10977524094816598 [1665639046] f1 0 20221013 ./d1/d1_1/ 10133099164684663 [1665639074] f2 0 20221013 ./d1/d1_1/ 9570149211263361 [1665639080] f3 0 20221013 ./d1/d1_1/ 9851624187974024 [1665639088] f1 0 20221013 ./d1/d1_2/ 9007199257842058 [1665639107] f2 0 20221013 ./d1/d1_2/ 9851624187974028 [1665639115] f3 0 20221013 ./d1/d1_2/ 10696049118105998 [1665639120] f2_2 0 20221013 ./d2/ 10414574141395314 [1665639154] f2_3_1 0 20221013 ./d2/d2_3/ 10414574141424462 [1665639207] f2_2_2 0 20221013 ./d2/d2_2/ 9851624187973976 [1665639223] f2_2_1 0 20221013 ./d2/d2_2/ 8725724281131669 [1665639238] #### use autodie; ... open my $pipe, '-|', $command; while (<$pipe>) { ... }