use strict; use warnings; print "\n"; my $currId; while () { my ($viewId, $viewName, $paramId, $paramName) = split; print " \n" if defined $currId && $currId ne $viewId; if (! defined $currId || $viewId ne $currId) { print qq( \n); $currId = $viewId; } print qq( $paramName\n); } print " \n\n"; __DATA__ 123456 all 123 Param 1 123456 all 124 Param 2 123457 detail 125 Param 3 123457 detail 126 Param 4 123457 detail 127 Param 5 123457 detail 128 Param 6