use File::Basename; # ... while( my @cols= splice @files, 0, 4 ) { my @table_cells; for( 0..3 ) { push @table_cells => $cols[$_] ? td( submit(-name=>'file', -value=> basename($cols[$_])) ) : td( ' ' ); } print Tr( {-align=>'center'}, @table_cells ); } #### while( my @cols= splice @files, 0, 4 ) { my @table_cells; for( 0..3 ) { push @table_cells => $cols[$_] ? submit(-name=>'file', -value=> basename($cols[$_])) : ' '; } print Tr( {-align=>'center'}, td(\@table_cells) ); }