App-csvtool
view release on metacpan or search on metacpan
lib/App/csvtool.pm view on Meta::CPAN
use constant COMMAND_OPTS => (
{ name => "fields|f=", description => "Comma-separated list of fields to extract",
default => "1" },
);
use constant WANT_READER => 1;
use constant WANT_OUTPUT => 1;
sub run ( $pkg, $opts, $reader, $output )
{
my @FIELDS = split m/,/, $opts->{fields};
# 1-indexed
$_ eq "u" || $_-- for @FIELDS;
while( my $row = $reader->() ) {
$output->( [ map { $_ eq "u" ? undef : $row->[$_] } @FIELDS ] );
}
}
}
lib/App/csvtool/Smudge.pm view on Meta::CPAN
}
sub run ( $pkg, $opts, $reader, $output )
{
my @filters;
foreach my $spec ( ( $opts->{filter} // [] )->@* ) {
# TODO: Accept DD-DD,DD-DD,etc... as indexes
my ( $fields, $filter ) = $spec =~ m/^(\d+(?:,\d+)*):(.*)$/ or
warn( "Unrecognised --filter spec; expected IDX:FILTER\n" ), next;
foreach my $idx ( split m/,/, $fields ) {
$filters[$idx - 1] = mk_filter( $filter );
}
}
while( my $row = $reader->() ) {
my @data = @$row;
# Skip header lines
unless( @data and $data[0] =~ m/^#/ ) {
foreach my $idx ( keys @filters ) {
( run in 0.572 second using v1.01-cache-2.11-cpan-f5b5a18a01a )