use Text::xSV; use file::Copy qw/ move /; # open original my $csv = new Text::xSV( sep => ';' ); $csv->open_file("foo.csv"); my $header = $csv->read_header(); # open new my $csv2 = Text::xSV->new( sep => ';', filename => "foo2.csv", # muss noch geƤndert werden, hab auf die schnelle keine methode # gefunden, einfach ein array auszulesen header => [keys %$header], ); $csv2->print_header(); while (my $row = $csv->get_row()) { for my $field (@$row) { if (length $field > 30) { substr($field, 29, -1, ""); } } # print to new file $csv2->print_row(@$row); } # move new file to original move "foo2.csv", "foo.csv";