Когда я пытаюсь использовать следующую программу, она распечатывает все элементы в массиве вместо двух, которые я хочу.
Нет, это не так.Как написано, ничего не печатает.При строгом включении он печатает «Глобальный символ« $ temp »требует явной упаковки».
Исправляя эту очевидную опечатку и включая предупреждения, он печатает «Использование неинициализированного значения $ _ в печати» дважды.
Пожалуйста, не тратьте наше время, показывая нам код, который либо не компилируется, не делает то, что вы говорите.Не перепечатывайте код на этом сайте - вырезайте и вставляйте фактический код, который вы используете.
Решение вашей проблемы будет примерно таким:
#!/usr/bin/perl
use strict;
use warnings;
my @array = ("1a","9","3c");
my @temp =("1","2","3");
foreach my $word (@temp) {
print grep /^$word/ , @array;
}
Но естьвероятно, более эффективные способы сделать это.