如何修改具有文件路径的Perl字符串中的目录?

wmi*_*ell 1 string perl

我有一个具有文件路径的字符串:

$workingFile = '/var/tmp/A/B/filename.log.timestamps.etc';
Run Code Online (Sandbox Code Playgroud)

我想更改目录路径,使用两个变量来记录旧路径部分和新路径部分:

$dir = '/var/tmp';
$newDir = '/users/asdf';
Run Code Online (Sandbox Code Playgroud)

我想得到以下内容:

'/users/asdf/A/B/filename.log.timestamps.etc'
Run Code Online (Sandbox Code Playgroud)

dax*_*xim 5

有不止一种方法可以做到这一点.使用正确的模块,您可以节省大量代码并使意图更加清晰.

use Path::Class qw(dir file);

my $working_file = file('/var/tmp/A/B/filename.log.timestamps.etc');
my $dir          = dir('/var/tmp');
my $new_dir      = dir('/users/asdf');

$working_file->relative($dir)->absolute($new_dir)->stringify;
# returns /users/asdf/A/B/filename.log.timestamps.etc
Run Code Online (Sandbox Code Playgroud)