Perl 如何将目录路径作为用户的输入

Perl 如何将目录路径作为用户的输入,perl,Perl,我想用Perl从用户那里获取一个目录路径作为输入。做这件事的方法是什么 我尝试了以下代码,但无效: use strict; use warnings; my $abc = "perl"; print "Enter the directory path\n"; my $path = <STDIN>; mkdir($path/$abc); 使用严格; 使用警告; 我的$abc=“perl”; 打印“输入目录路径\n”; 我的$path=; mkdir($path/$abc); 有

我想用Perl从用户那里获取一个目录路径作为输入。做这件事的方法是什么

我尝试了以下代码,但无效:

use strict;
use warnings;

my $abc = "perl";

print "Enter the directory path\n";
my $path = <STDIN>;

mkdir($path/$abc);
使用严格;
使用警告;
我的$abc=“perl”;
打印“输入目录路径\n”;
我的$path=;
mkdir($path/$abc);

有一些错误

您需要
chomp
输入以删除尾随的换行符

您需要在路径周围添加引号;否则,Perl将
/
视为除法。你可能看到了警告信息

无法使用创建目录结构。这些文档告诉您使用
File::Path
中的
mkpath

use strict;
use warnings;
use File::Path qw(mkpath);

my $abc = "perl";

print "Enter the directory path\n";
my $path = <STDIN>;
chomp $path;

mkpath("$path/$abc");
使用严格;
使用警告;
使用File::Path qw(mkpath);
我的$abc=“perl”;
打印“输入目录路径\n”;
我的$path=;
chomp$path;
mkpath(“$path/$abc”);

有一些错误

您需要
chomp
输入以删除尾随的换行符

您需要在路径周围添加引号;否则,Perl将
/
视为除法。你可能看到了警告信息

无法使用创建目录结构。这些文档告诉您使用
File::Path
中的
mkpath

use strict;
use warnings;
use File::Path qw(mkpath);

my $abc = "perl";

print "Enter the directory path\n";
my $path = <STDIN>;
chomp $path;

mkpath("$path/$abc");
使用严格;
使用警告;
使用File::Path qw(mkpath);
我的$abc=“perl”;
打印“输入目录路径\n”;
我的$path=;
chomp$path;
mkpath(“$path/$abc”);

请按照链接了解创建目录所需的权限-

下面是一个示例代码,如果我必须创建目录结构,我可能会使用该代码(该解决方案开放供反馈):

使用严格;
使用警告;
我的$abc=“perl”;
打印“输入目录路径\n”;
我的$path=;
#chomp:从输入的末尾删除换行符
chomp$path;
#最终目录路径
my$dir=“$path/$abc”;
#如果输入目录不存在,则退出
除非(-d$path){
打印“$path不存在,请重试\n”;
出口1;
}
#如果没有写入权限,则退出
#创建新目录需要写入权限
除非(-w$path){
打印“$path不可写,请尝试其他路径\n”;
出口1;
}
#到目前为止,很好,请尝试创建目录
if(mkdir($dir)){
打印“$dir已创建”;
出口0;
}否则{
#如果目录已经存在,您将获得
#无法创建/opt/perl/perl:文件存在
#如果输入目录上没有执行权限
#无法创建/opt/perl/perl:权限被拒绝
die“无法创建$dir:$!\n”;
}

请按照链接了解创建目录所需的权限-

下面是一个示例代码,如果我必须创建目录结构,我可能会使用该代码(该解决方案开放供反馈):

使用严格;
使用警告;
我的$abc=“perl”;
打印“输入目录路径\n”;
我的$path=;
#chomp:从输入的末尾删除换行符
chomp$path;
#最终目录路径
my$dir=“$path/$abc”;
#如果输入目录不存在,则退出
除非(-d$path){
打印“$path不存在,请重试\n”;
出口1;
}
#如果没有写入权限,则退出
#创建新目录需要写入权限
除非(-w$path){
打印“$path不可写,请尝试其他路径\n”;
出口1;
}
#到目前为止,很好,请尝试创建目录
if(mkdir($dir)){
打印“$dir已创建”;
出口0;
}否则{
#如果目录已经存在,您将获得
#无法创建/opt/perl/perl:文件存在
#如果输入目录上没有执行权限
#无法创建/opt/perl/perl:权限被拒绝
die“无法创建$dir:$!\n”;
}

File::Path的make_路径将避免对您起作用:)File::Path的make_路径将避免对您起作用:)