#!perl use warnings; use strict; use CGI; my $string = join ';',('elem1=comment1','elem1_drp=cause1', 'elem2=comment2','elem2_drp=cause2', 'elem3=comment3','elem3_drp=cause3'); my $q = CGI->new($string); for my $k ( sort $q->param ) { if ($k =~ /(.+)_drp$/){ print join'|', $q->param( $1 ),$q->param( $k )."\n"; } }