我是Perl的新手,我想创建一个程序来创建一个目录并使用Unix命令将文件移动到该目录中:
mkdir test
我知道会创建一个名为“test”的目录。从那里我想提供更多选项,如:
mv *.jpg test
这会将所有.jpg文件移动到我的新目录中。
到目前为止,我有这个:
#!/usr/bin/perl
print "Folder Name:";
$fileName = <STDIN>;
chomp($fileType);
$result=`mkdir $fileName`;
print"Your folder was created \n";
任何人都可以帮我解决这个问题吗?
答案 0 :(得分:3)
尝试这样做:
#!/usr/bin/perl
use strict; use warnings;
print "Folder Name:";
$dirName = <STDIN>;
chomp($dirName);
mkdir($dirName) && print "Your folder was created \n";
rename $_, "$dirName/$_" for <*.jpg>;
使用内置perl
函数时,您将获得比使用Unix命令更好的控制。这就是我的片段。
答案 1 :(得分:1)
大多数(如果不是全部)Unix命令都有相应的版本作为函数
e.g
mkdir - 请参阅here
mv - 请参阅here
等。要么从各种手册页中打印出来(或者可能要去书店购物 - O'Reilly坚果壳书和其他书一样好。)
答案 2 :(得分:0)
在perl中,你可以在反引号中使用bash命令。但是,当mkdir命令不创建目录时会发生什么?你的程序没有得到通知,并继续以愉快的方式认为一切都很好。
你应该在perl中使用内置命令做同样的事情。
使用这些功能捕获错误要容易得多,并且优雅地失败。此外,它们运行得更快,因为您不必为每个运行的命令分叉一个新进程。
答案 3 :(得分:0)
Perl有一些类似于shell的功能。你可以使用
mkdir $filename;
您可以使用反引号来运行shell命令,但只有在命令向其标准输出返回任何内容时才会使用它,mkdir
不会。对于没有输出的命令,请使用system
:
0 == system "mv *.jpg $folder" or die "Cannot move: $?";