Ваш оператор присваивания '$ sub =' сбивает с толку. Это скаляр путей, разделенных пробелами?
Правильно ли я считаю, что вы хотите взять пути, перечисленные в $ sub, и поместить в один список слова с текстом, а в другой - нет?
Принимая все вышеперечисленное:
my $sub = ""; # initialize this however you will.
my @paths = split(/ /, $sub); # space-separated paths to list
my (@with_text, @without);
foreach my $p (@paths){
$p =~ s/\\/./g; # replace \ with .
if($p =~ /text/){
push(@with_text, $p);
} else{
push(@without, $p);
}
}
my $var1 = join(' ', @with_text); # a space-separated list of paths containing 'text'
my $var2 = join(' ', @without); # a space separated list of paths not containing 'text'