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 ); }