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 )