Подстановка s///
работает по побочному эффекту.Его возвращаемое значение вряд ли когда-либо, что вы хотите.Вы особенно не хотите использовать s
здесь, когда вы, кажется, не хотите, чтобы $hdisk
изменился.
Захватывайте куски $hdisk
с m
вместо s
.
use strict;
use warnings;
my $hdisk="hdisk361";
my ($word, $number) = $hdisk =~ m/(hdisk\D*)(\d+)/i;
my $newdisk = ($word eq "hdiskpower"?"prw":"dsk").$number;
print "hdisk: $hdisk"."\n";
print "newdisk: $newdisk"."\n";