—#!/perl
#ABSTRACT: command line utility that insert new columns in csv files
package
csvprocess;
$csvprocess::VERSION
=
'1.01'
;
use
strict;
use
warnings;
use
CSV::Processor;
use
Regexp::Common;
use
Carp;
use
Pod::Usage;
$SIG
{__DIE__} =
sub
{
Carp::longmess(
$_
[0] );
};
my
%opts
;
GetOptions(
"f|file=s"
=> \
$opts
{file},
"i|in=s"
=> \
$opts
{in_column},
"o|out=s"
=> \
$opts
{out_column},
"p|processor=s"
=> \
$opts
{processor},
"v|verbose"
=> \
$opts
{verbose}
) or
die
(
"Error in command line arguments\n"
);
say
"Verbose mode enabled"
if
$opts
{verbose};
pod2usage()
if
!
defined
$opts
{file};
if
( !
defined
$opts
{in_column} ) {
$opts
{in_column} = 6;
# by default ygeo set url in column with index 6
}
if
(
$opts
{in_column} =~ /
$RE
{num}{
int
}/ && !
$opts
{out_column} ) {
$opts
{out_column} =
$opts
{in_column} + 1;
}
say
"Reading data from column "
.
$opts
{in_column}
.
", writing data to column "
.
$opts
{out_column}
if
$opts
{verbose};
my
$method
=
$opts
{processor};
say
"Processor: CSV::Process::"
.
$method
if
$opts
{verbose};
my
$bot
= CSV::Processor->new(
file
=>
$opts
{file},
verbose
=>
$opts
{verbose} );
$bot
->
$method
(
$opts
{in_column},
$opts
{out_column} );
1;
__END__
=pod
=encoding UTF-8
=head1 NAME
csvprocess - command line utility that insert new columns in csv files
=head1 VERSION
version 1.01
=head1 SYNOPSIS
csvprocess -f <file_name> -p <method> -i <in_column_name_or_index> -o <out_column_name_or_index> -v
csvprocess -f test.csv -p add_email -i 0
csvprocess -f test.csv -p add_email -i 0 -o 5 -v
csvprocess -f test.csv -p add_email -i EMAIL -v
Column numbering starts from 1, inserted column will have <out_column_name_or_index>
If no third parameter (<out_column_name_or_index>) provided data will be written next column
All available options:
-f | --file name of input file
-p | --processor name of method of L<CSV::Processor>
-i | --in number or name of column, data from which will be considered as source
-o | --out number or name of column, where result will be stored
-v | --verbose verbose mode
=head1 DESCRIPTION
Set of useful utilities that works with html and urls
=head1 AUTHOR
Pavel Serikov <pavelsr@cpan.org>
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2018 by Pavel Serikov.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
=cut