gpt4 book ai didi

Perl `dirname` 打印点而不是完整路径

转载 作者:行者123 更新时间:2023-12-04 17:49:10 25 4
gpt4 key购买 nike

我正在尝试实现一个 perl 脚本,我需要获取我执行的文件的目录。

例如,如果我正在执行的文件位于 C:\Scripts\MyScript.pl我想得到 C:\Scripts .

我试过 dirname但它似乎没有做我想做的。它只是打印 .
我知道我需要使用 dirnameabs_path然而在一起abs_path对我来说似乎有问题,因为它返回一些 UNIX 查找目录,然后将它与实际路径连接起来,而实际路径最终显然是无效路径。

这是我的概念证明。

# The initial variable with file
say $0; # C:\Users\sed\AppData\Roaming\npm\node_modules\my-test-module\my-test-file

# This is just a current directory
say dirname($0); # .

# This looks like a bug to me, the shell is opened in C:/Users/sed so it is related
say abs_path($0); # /c/Users/sed/C:/Users/sed/AppData/Roaming/npm/node_modules/my-test-module\my-test-file

# This is what I need, except I don't need that first UNIX looking part
say dirname(abs_path($0)); # /c/Users/sed/C:/Users/sed/AppData/Roaming/npm/node_modules/my-test-module

最佳答案

快速浏览:

perldoc File::Basename

说明为什么它可能不是您需要做的事情的最佳选择。
请改为尝试 File::Spec。
C:\Users\Ken> echo C:\Scripts\MyScript.pl | perl -MFile::Spec -lne "print $_; ($v,$d,$f)=File::Spec->splitpath($_); print $v.$d;"
C:\Scripts\MyScript.pl
C:\Scripts\

类型:
perldoc File::Spec

想要查询更多的信息。顺便说一句,我用 Strawberry perl v5.24.1 测试过

关于Perl `dirname` 打印点而不是完整路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46496424/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com