Output:#!/usr/bin/perl -w use strict; use Text::CSV_XS; my ( $csv, $xml ); $csv = Text::CSV_XS->new( { 'sep_char' => ';' } ); $xml = ''; while( <DATA> ) { chomp; if ( $csv->parse( $_ ) ) { my ( $line, $n, @fields, $field ); $line = '<row>'; $n = 1; @fields = $csv->fields(); foreach $field ( @fields ) { $line .= "<col$n>$field</col$n>"; $n++; } $xml .= $line . "</row>\n"; } else { print "parse() failed on this line: " . $csv->error_input() . +"\n"; # die? } } print $xml; __DATA__ a;b;c;d;e f;g;h;i j;k l m;n;o
$ ./main.pl <row><col1>a</col1><col2>b</col2><col3>c</col3><col4>d</col4><col5>e</col5></row> <row><col1>f</col1><col2>g</col2><col3>h</col3><col4>i</col4></row> <row><col1>j</col1><col2>k</col2></row> <row><col1>l</col1></row> <row><col1>m</col1><col2>n</col2><col3>o</col3></row>There's probably an XML package out there should your required output become more complex or you want to guarantee that you are using a standardized and optimized solution.
Peace,
Purdy
In reply to Minor addition
by Purdy
in thread newbie regex question: substituting repeating occurences for different replacements
by RuyLopez
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |