这是我的情况:
use strict;
use Cwd;
use Getopt::Long;
Getopt::Long::Configure('pass_through');
use File::Spec;
use File::Basename;
1) -out=/some/place/some_filename.txt
2) -out=/some/place/
3) -out=some_filename.txt
如上例所示,任何用户都可以给出任何“-out=”。我对路径名感兴趣,因为我必须检查目录是否可写以创建/覆盖日志文件,如果目录不可写,则退出并发出警告。
如果 -out= 是选项 1,那么 fileparse 会给我 '/some/place' 我可以 -w 。
如果 -out= 是选项 2,那么我可以只使用 -d 和 -w,然后附加一个默认文件名。像'/some/place/default_filename.txt'这样的东西
如果 -out= 是选项 3,我必须将 'my $cwd' 附加到文件名。类似'/current/working/dir/some_filename.txt'
请求的文件可能预先存在也可能不存在。文件名可能是 .log 或 .txt 或 .dat 或根本没有扩展名,这取决于用户的心血来潮,我必须根据需要创建/覆盖该文件。
所以我在这里向更有经验的 Perl 战术家提出问题,因为 -out= 在用户之间是不确定的,那么提取路径名的最佳方法是什么?我可以做'if (-d $out)',但如果用户只是给了一个文件名呢?我可能会很幸运,用户可能会给出完整的路径/文件名,或者只是目录路径。或者用户可能对将他的数据放在当前工作目录中而感到满意,并且只会给出一个文件名。我在 fileparse 中插入了一个文件名并得到:“$path=./”
罗德里克