package POE::Filter::Ls; use POE::Filter::Line; $VERSION = 0.01; sub new { my $class = shift; return bless [ new POE::Filter::Line( Literal => "\015\012" ) ], ref($class)||$class; } sub put { my ($self, $lines) = @_; return $self->[0]->put($lines); } sub get { my ($self, $lines) = @_; return [ map { my %info; if (/^(.|-)(.{9})\s+(\d+)\s+(\w+)\s+(\w+)\s+(\d+)\s+(\w{3}\s+\d+\s+\d+:\d+)\s+(.*?)(?:\s+->\s+(.*))?$/) { @info{"type","perms","links","owner","group","size","date","filename","link"} = ($1, $2, $3, $4, $5, $6, $7, $8, $9); } \%info; } @{ $self->[0]->get($lines) } ]; } 1; __END__ =head1 NAME POE::Filter::Ls - translates common ls formats into a hashref