use warnings; use strict; use Data::Dump; my @array1 = ('ux_prim_clk', 'ux_side_clk', 'ux_xtal_frm_refclk'); my @array2 = ('ccu_ux_xtal_frm_refclk_ack', 'ibbs_ux_prim_clkack', 'sbr_ux_side_clkack'); my @array1_split_2D = map {[split /_/,$_]} @array1; my @array2_split_2D = map {[split /_/,$_]} @array2; dd "before", \@array1_split_2D, \@array2_split_2D; for my $i (0..$#array1_split_2D) { for my $j (0..$#array2_split_2D) { dd $i, $j; dd $array1_split_2D[$i], $array2_split_2D[$j]; while ( @{$array1_split_2D[$i]} < @{$array2_split_2D[$j]} ) { splice @{$array2_split_2D[$j]}, 0, 1; } dd $array2_split_2D[$j]; } } dd "after", \@array1_split_2D, \@array2_split_2D;