$ cat 930260.pl #!/usr/bin/perl use strict; use warnings; while (my $line = ) { chomp $line; my @flds = split /-(?=[^-]+(-r[0-9]+)?$)/, $line; print join("|", @flds),">\n"; } __DATA__ mono-basic-2.10 mono-2.10.2-r1 mono-2.10.5 $ perl 930260.pl Use of uninitialized value $flds[1] in join or string at 930260.pl line 9, line 1. mono-basic||2.10> Use of uninitialized value $flds[3] in join or string at 930260.pl line 9, line 2. mono|-r1|2.10.2||r1> Use of uninitialized value $flds[1] in join or string at 930260.pl line 9, line 3. mono||2.10.5>