用户输入可以只是一个文件名/文件名,其中包含文件所在的路径 存在。这是用户唯一的两个选项。
use File::Basename qw(dirname basename);
my $input = <STDIN>;
my $file = basename($input);
my $path = dirname($input);
每当用户只提供文件名时,我就会获得路径为。(DOT - 当前目录)。该文件不存在于该路径中。对我来说,如果用户没有提供路径,则意味着我从特定目录中选择它。
我目前正在使用粗略的逻辑来检查$ path的长度,以查看是否给出了路径。
有没有其他方法我可以使用它告诉路径是否被提及。任何输入都非常有用。
答案 0 :(得分:1)
您可以检查用户发送的文件是否存在(并且是文件)。如果没有,请在文件前添加自定义目录:
use warnings;
use strict;
use File::Basename qw(dirname basename);
my $input = <STDIN>;
chomp $input;
my $file = basename($input);
my $path = dirname($input);
my $custom_dir = '/path/to';
if (! -f $input){
print "$custom_dir/$file\n";
}
else {
print "$input\n";
}
答案 1 :(得分:1)
您可以检查/
中是否有$input
。
use File::Basename qw(dirname basename);
my $input = <STDIN>;
my ($file, $path);
if ($input =~ m{/}) {
$file = basename($input);
$path = dirname($input);
} else {
$path = '/foo/bar/';
$file = $input;
}
答案 2 :(得分:0)
我会说:
if ( -f $input ) {
#it's a file that exists, so the path is probably right
}
或者,您可以只测试$path eq '.'
是否可以?