LINUX.ORG.RU

Сообщения balista

 

Как удалить элемент из массива Perl по значению?

Форум — Web-development

Здравствуйте, помогите разобраться с задачей..

Есть массив

my @arrset = ('1_10', '1_19', '1_28', '3_12', '3_21', '3_30', '4_13', '4_22', '4_31', '5_14', '5_23', '5_32', '6_15', '6_24', '6_33', '7_16', '7_25', '7_34', '10_19', '10_28', '12_21', '12_30', '13_22', '13_31', '14_23', '14_32', '15_24', '15_33', '16_25', '16_34', '17_26', '17_35', '18_27', '18_36', '19_28', '21_30', '22_31', '23_32', '24_33', '25_34', '26_35', '27_36', '8_17', '8_26', '8_35', '9_18', '9_27', '9_36');

Есть функция:

sub adsp {
  $rand = rand @arrset;
  $rand_num = $arrset[$rand];
  $rand_num =~ /^(\d+)_(\d+)$/;
  $buf = $1;
  $buf2 = $2;

  $arrset = [grep { /^\d+_$buf$/ } @$arrset];
  $arrset = [grep { /^\d+_$buf2$/ } @$arrset];
  $arrset = [grep { /^${buf}_\d+$/ } @$arrset];
  $arrset = [grep { /^${buf2}_\d+$/ } @$arrset];
  return $rand_num; 
}

$first = adsp;
$second = adsp;
$third = adsp;
$fourth = adsp;

По идее должно удалить все элементы содержащие хоть половинку(цифру) из рандом выбранного элемента массива. На практике не работает, подскажите в чем моя ошибка?

 ,

balista
()

RSS подписка на новые темы