App-CSVUtils
view release on metacpan or search on metacpan
lib/App/CSVUtils/csv_cmp.pm view on Meta::CPAN
case difference).
If all the values of two CSV files are identical, then utility will exit with
code 0. If a value differ, this utility will stop, print the difference and exit
with code 1.
If C<-l> (C<--detail>) option is specified, all differences will be reported. Note
that in C<cmp> Unix command, the C<-l> option is called C<--verbose>. The detailed
report is in the form of CSV:
rownum,fieldnum,value1,value2
where C<rownum> begins at 1 (for header row), C<fieldnum> begins at 1 (first
field), C<value1> is the value in first CSV file, C<value2> is the value in the
second CSV file.
Other notes:
=over
=item * If none of the field selection options are used, it means all fields are
included (equivalent to C<--include-all-fields>).
=item * Field selection will be performed on the first CSV file, then the indexes will
be used for the second CSV file.
=back
This function is not exported.
Arguments ('*' denotes required arguments):
=over 4
=item * B<detail> => I<true>
Report all differences instead of just the first one.
=item * B<exclude_field_pat> => I<re>
Field regex pattern to exclude, takes precedence over --field-pat.
=item * B<exclude_fields> => I<array[str]>
Field names to exclude, takes precedence over --fields.
=item * B<ignore_case> => I<bool>
Ignore case difference.
=item * B<ignore_leading_ws> => I<bool>
Ignore leading whitespaces.
=item * B<ignore_trailing_ws> => I<bool>
Ignore trailing whitespaces.
=item * B<ignore_unknown_fields> => I<bool>
When unknown fields are specified in --include-field (--field) or --exclude-field options, ignore them instead of throwing an error.
=item * B<ignore_ws> => I<bool>
Ignore leading & trailing whitespaces.
=item * B<include_field_pat> => I<re>
Field regex pattern to select, overidden by --exclude-field-pat.
=item * B<include_fields> => I<array[str]>
Field names to include, takes precedence over --exclude-field-pat.
=item * B<inplace> => I<true>
Output to the same file as input.
Normally, you output to a different file than input. If you try to output to the
same file (C<-o INPUT.csv -O>) you will clobber the input file; thus the utility
prevents you from doing it. However, with this C<--inplace> option, you can
output to the same file. Like perl's C<-i> option, this will first output to a
temporary file in the same directory as the input file then rename to the final
file at the end. You cannot specify output file (C<-o>) when using this option,
but you can specify backup extension with C<-b> option.
Some caveats:
=over
=item * if input file is a symbolic link, it will be replaced with a regular file;
=item * renaming (implemented using C<rename()>) can fail if input filename is too long;
=item * value specified in C<-b> is currently not checked for acceptable characters;
=item * things can also fail if permissions are restrictive;
=back
=item * B<inplace_backup_ext> => I<str> (default: "")
Extension to add for backup of input file.
In inplace mode (C<--inplace>), if this option is set to a non-empty string, will
rename the input file using this extension as a backup. The old existing backup
will be overwritten, if any.
=item * B<input_escape_char> => I<str>
Specify character to escape value in field in input CSV, will be passed to Text::CSV_XS.
Defaults to C<\\> (backslash). Overrides C<--input-tsv> option.
=item * B<input_filenames> => I<array[filename]> (default: ["-"])
Input CSV files.
Use C<-> to read from stdin.
Encoding of input file is assumed to be UTF-8.
( run in 0.636 second using v1.01-cache-2.11-cpan-39bf76dae61 )