Сначала - включите strict
и ] предупреждения
в верхней части вашей программы:
use strict;
use warnings;
Это поможет вам определить ошибки вроде @core [0]
на самом деле неверно.
Однако вторая проблема заключается в том, что вы отправляете метасимволы в свое регулярное выражение - []
означает что-то особенное в регулярном выражении.
Итак, что вам действительно нужно, так это функция quotemeta
.
print quotemeta '@core[0]';
Что превращает его в:
\@core\[0\]
или
print quotemeta $core[0];
Что в приведенном вами примере напечатает:
TEST\[1\]
Конечно, вам также, вероятно, не нужно system ()
вызывать perl
изнутри perl
. Это просто неэффективно и беспорядочно.