Я хочу сравнить строку в двух 2D массивах, но размер не совпадает.Итак, я хочу сместить элемент в одном массиве, чтобы он соответствовал всем элементам в другом массиве, но у меня закончились представления о том, каким должен быть цикл.
Я впервые использую язык Perl.Я изучал язык c раньше.
#!/usr/intel/pkgs/perl/5.14.1/bin/perl
use Data::Dumper qw(Dumper);
@clk = (
'prescc_ux_aux_clk',
'prescc_ux_prim_clk',
'usb2_phy_side_clk',
'usb3_phy_side_clk',
'ux_prim_clk',
'ux_side_clk',
'ux_xtal_frm_refclk',
'uxd_aux_clk',
'uxd_pgcb_clk',
'uxd_prescc_aux_clk',
'uxd_prim_clk',
'uxd_side_clk',
'uxd_suspend_clk');
@clkack = (
'ccu_ux_xtal_frm_refclk_ack',
'ibbs_ux_prim_clkack',
'sbr_ux_side_clkack',
'uxd_aux_clkack',
'uxd_pgcb_clkack',
'uxd_prim_clkack',
'uxd_side_clkack');
foreach(@clk){
@clkline = map {[split /_/,$_]} @clk;
}
foreach(@clkack){
@clkackline = map{[split /_/,$_]} @clkack;
}
#print Dumper @clkline;
$match = 0;
$clkack_row = @clkackline; #no. of row in clkackline
$clk_row = @clkline;
for ($i=0; $i<$clkack_row; $i++){
$clkackcolumn = @{$clkackline[$i]};
for ($j=0; $j<$clkackcolumn; $j++){
for ($m=0; $m<$clk_row; $m++){
$clkcolumn = @{$clkline[$m]};
for ($n=0; $n<$clkcolumn; $n++){
if ($clkline[$i][$j] eq $clkacline[$m][$n]){
$match = $match + 1;
print "$match\n";
}
}
}
}
}
Я ожидаю, что он зациклит массив @clkackline и сравнит его с массивом @clkline.Если он соответствует, то он даст количество совпадений, следовательно, переменная $ match.
Отредактировано:
Мне нужно разделить его на '_', чтобы я мог разделить элементтолько словом внутри другого массива.Например:
$clk[0] = ux_prim_clk will result in;
$clkline[0][0] = ux, $clkline[0][1] = prim, $clkline[0][2] = clk.
Затем мне нужно сравнить элемент массива @clkackline по элементам, но в последовательном порядке.Например:
$clkline[0][0] = $clkackline[0][0],
$clkline[0][1] = $clkackline[0][1],
$clkline[0][2] = $clkackline[0][2].
Но другая проблема заключается в том, что мне нужно сравнить @clkline со всеми элементами в clkackline.Но так как размер будет ограничением, то мне нужно сместить @clkackline, чтобы он соответствовал @clkline, или наоборот.
Например: Первая проверка:
$clkline[1][0] = $clkackline[0][0],
$clkline[1][1] = $clkackline[0][1],
$clkline[1][2] = $clkackline[0][2].
Вторая проверка:
$clkline[1][0] = $clkackline[0][1],
$clkline[1][1] = $clkackline[0][2],
$clkline[1][2] = $clkackline[0][3].
Это просто пример, конечно, но вы можете видеть, что он мне нужен, чтобы удалить первый столбец в $ clkackline [0].
Тогда мне нужно посчитать, сколько процентов он будет соответствовать.
Например:
ux_prim_clk vs uxd_prim_clkack will return 33.33%.
Затем сохранить элемент с наибольшим соответствием в другом массиве (например: @clknew)