40 lines
1 KiB
Perl
Executable file
40 lines
1 KiB
Perl
Executable file
#!/usr/bin/env perl
|
|
|
|
use strict;
|
|
use POSIX qw(strftime);
|
|
$|++;
|
|
|
|
sub mj {
|
|
%_ = @_;
|
|
'{ts:"'.strftime( '%Y-%m-%d %H:%M:%S', localtime).'", proc:"s", '.join( ', ', map "$_:\"$_{$_}\"", keys%_)."}\n";
|
|
}
|
|
|
|
sub readg {
|
|
my $data = '';
|
|
while( length( $data) < $_[0]) {
|
|
read( STDIN, $data, $_[0]-length($data), length($data)) or return(0);
|
|
}
|
|
$data;
|
|
}
|
|
|
|
my$dir = shift @ARGV;
|
|
$dir =~ /^(\/.*)\/([^\/]+)$/ or die( mj( error=>'invalid_path_expression', message=>'Path-Expression is invalid.'));
|
|
($dir, my$fexpr) = ($1, $2);
|
|
|
|
chdir( $dir) or die( mj( error=>'change_directory', value=>$dir, message=>$!));
|
|
opendir( DH, '.') or die( mj( error=>'dir_not_found', message=>'Directory not found.'));
|
|
while( my$filename = readdir( DH)) {
|
|
next unless $filename =~ /$fexpr/ and -f $filename;
|
|
print pack( 'nNA*', 1, length($filename), $filename);
|
|
open F, $filename;
|
|
my$length = readg 4;
|
|
$length = unpack 'N', $length;
|
|
seek F, $length, 0;
|
|
while( read( F, my$r, 1400)) {
|
|
print pack( 'nNA*', 2, length($r), $r);
|
|
}
|
|
close F;
|
|
}
|
|
closedir DH;
|
|
exit( 0);
|