Perl入門ゼミ

テキスト処理、Linuxサーバー管理、Web開発ならPerl
  1. Perl
  2. ファイル操作
  3. here

ファイルをコピーする

ファイルをコピーするにはFile::Copyモジュールのcopy関数を使用します。成功すれば真が、失敗すれば偽が返ります。またcopy関数が失敗すれば、$!にエラーの内容が、格納されます。

use File::Copy 'copy';
copy $file, $copy_name;

ファイルをディレクトリの中にコピーすることもできます。

use File::Copy 'copy';
copy $file, $dir;

サンプル

ファイルをコピーするサンプルです。

use strict;
use warnings;
use Fcntl;
use File::Copy 'copy';

# ファイルをコピーする。
my $file = "sample_20080521_$$.txt";
my $dir = "dir_20080521_$$";

# 準備 ファイルとディレクトリの作成
sysopen( my $fh, $file, O_WRONLY | O_CREAT | O_EXCL )
  or die "$file を作成することができません。: $!";
close $fh;
print "準備: '$file'が作成されました。\n";

mkdir $dir
  or die "$dir を作成することができません。 : $!";
print "準備: '$dir'が作成されました。\n\n";

print "1. ファイルをコピーする。\n";
my $copy_name = "$file.copy";
if (copy $file, $copy_name) {
  print "$file は、 $copy_name にコピーされました。\n\n";
}
else {
  warn "$file を $copy_name にコピーできません。$!";
}

print "2. ファイルをディレクトリにコピーする。\n";
if (copy $file, $dir) {
  print "$file は、 $dir にコピーされました。\n\n";
}
else {
  warn "$file を $dir にコピーできません。: $!";
}

(参考)sysopen関数Fcntl

  • Perlとはテキスト処理の記述性とパフォーマンスに優れ、正規表現が言語に組み込まれているプログラミング言語です。
  • Linuxサーバーでのフィルタリングプログラム、複数行の文字列を処理、ファイル内容の検索・置換などが得意
  • Perlはgitopensslなど広く普及したUnix/Linuxミドルウェアの補助ツールとして採用実績あり。後方互換性とポータビリティの高さがひとつの理由と推測。
  • 大量のテキストを扱うWeb開発も得意。ロングテールSEOを意識したWebサイト、アドテクやソーシャルゲームでの50ms以内のJSONの生成など。