Perl中的Unix命令?

时间:2013-03-15 14:48:58

标签: perl unix

我是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";

任何人都可以帮我解决这个问题吗?

4 个答案:

答案 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: $?";