1

私は 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

4 に答える 4

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 コマンドを使用するよりも制御しやすくなります。それが私のスニペットのポイントです。

于 2013-03-15T14:52:57.737 に答える
1

ほとんどの (すべてではないにしても) Unix コマンドには、関数として対応するバージョンがあります。

例えば

mkdir -ここを参照

mv -ここを参照

などなど、さまざまなマニュアル ページを印刷してください (または、本屋に足を運ぶこともできます。O'Reilly のナッツ シェル本は、他の本と同様に非常に優れています)。

于 2013-03-15T14:54:05.533 に答える
0

Perl には、シェルと同様の機能がいくつかあります。あなたはただ使うことができます

mkdir $filename;

逆引用符を使用してシェルコマンドを実行できますが、コマンドが標準出力に何かを返す場合にのみ役立ちますが、そうではありmkdirません。出力のないコマンドの場合は、次を使用しますsystem

0 == system "mv *.jpg $folder" or die "Cannot move: $?";
于 2013-03-15T14:56:22.520 に答える
0

perl では、バッククォートで bash コマンドを使用できます。しかし、ディレクトリが mkdir コマンドによって作成されていない場合はどうなりますか? あなたのプログラムはこれについて通知を受けず、すべてがうまくいっていると考えて陽気な道を歩み続けます。

同じことを行う perl の組み込みコマンドを使用する必要があります。

これらの関数でエラーをトラップし、正常に失敗する方がはるかに簡単です。さらに、実行するコマンドごとに新しいプロセスをフォークする必要がないため、実行速度が向上します。

于 2013-03-15T14:54:54.270 に答える