作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在执行 Perl 脚本以将另一个变量附加到当前工作目录的末尾,但我在使用该模块时遇到问题。
如果我从 D:\
运行 getcwd,返回的值为
D:/ (with forward slash)
如果我从 D:\Temp\
运行 getcwd,返回的值为
D:/temp (without forward slash)
这让情况变得非常棘手,因为如果我只是这样做:
use Cwd;
$ProjectName = "Project"; # This is a variable supplied by the user
$directory = getcwd().$ProjectName."\/";
print $directory."\n";
我会选择其中之一
D:/Project (correct)
或
D:/TempProject (instead of D:/Temp/Project)
这是 Cwd
中的一个特性吗?文档里好像没有。
我想出了下面的代码来解决这个问题。它需要 3 行来完成。你们有谁能看到更简洁的方法吗?
use Cwd;
$ProjectName = "Project"; # This is a variable supplied by the user
$directory = getcwd();
$directory =~ s/(.+?)([^\\\/])$/$1$2\//g; # Append "/" if not terminating with forward/back slash
$directory .= $ProjectName."\/";
print $directory."\n";
最佳答案
使用File::Spec而不是制作自己的路径操作例程。
use Cwd;
use File::Spec;
$ProjectName = "Project";
$cwd = getcwd();
$directory = File::Spec->catdir($cwd, $ProjectName);
print "$directory\n";
关于Perl getcwd 结束正斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/922221/
我是一名优秀的程序员,十分优秀!