Моя задача заключалась в замене часть в $ string1 со всеми $ строка2, расколе на запятых.
/root_vdm_2/fs_clsnymigration/CLSNYMIGRATION/NY_HQ_S1/LISU,rfsn_clsnymigration
/root_vdm_2/fs_users/users/Marketing,rfsw_users
/root_vdm_3/fs_sandi/sandi_users,rfsw_sandi
/root_vdm_3/fs_pci/Analytics,rfsw_pci
/root_vdm_4/fs_camnt01/camnt01/AV,rfsw_camnt01
/root_vdm_1/fs_stcloud01/sfa,rfss_stcloud01
/root_vdm_3/fs_stcloud03/data4,rfss_stcloud03
/root_vdm_2/fs_stcloud02/depart1,rfss_stcloud02
Трудность я увидел, был первоначально как заменить /root_vdm_2/fs_clsnymigration
с rfsn_clsnymigration
, и я позволил себе думать, что регулярное выражение является наилучшим подходом.
Хотя гораздо менее красноречив, это получает работу:
foreach $line (@lines) {
chop $line;
($orig,$replica) = split /\,/, $line;
chop substr $orig, 0, 1;
@pathparts = split /\//, $orig;
$rootvdm = shift @pathparts;
@pathparts[0] = $replica;
$newpath = "/" . join ('/', @pathparts);
print " here's \$newpath:$newpath\n";
}
... что дает что-то вроде этого:
here's $newpath:/rfsn_clsnymigration/CLSNYMIGRATION/NY_HQ_S1/LISU
here's $newpath:/rfsw_users/users/Marketing
here's $newpath:/rfsw_sandi/sandi_users
here's $newpath:/rfsw_pci/Analytics
here's $newpath:/rfsw_camnt01/camnt01/AV
here's $newpath:/rfss_stcloud01/sfa
here's $newpath:/rfss_stcloud03/data4
here's $newpath:/rfss_stcloud02/depart1
Может '$ строка = ~ s/\/root_vdm_2 \ // \/rfsn_clsnymigration \ // g; 'не делал perl раньше, но, глядя на некоторые документы, выглядит так. – chris85