Perl Cd Bookshelf [Electronic resources] نسخه متنی

اینجــــا یک کتابخانه دیجیتالی است

با بیش از 100000 منبع الکترونیکی رایگان به زبان فارسی ، عربی و انگلیسی

Perl Cd Bookshelf [Electronic resources] - نسخه متنی

| نمايش فراداده ، افزودن یک نقد و بررسی
افزودن به کتابخانه شخصی
ارسال به دوستان
جستجو در متن کتاب
بیشتر
تنظیمات قلم

فونت

اندازه قلم

+ - پیش فرض

حالت نمایش

روز نیمروز شب
جستجو در لغت نامه
بیشتر
لیست موضوعات
توضیحات
افزودن یادداشت جدید

9.3. Copying or Moving a File


9.3.1. Problem




You need to copy a file, but Perl has no
built-in copy function.

9.3.2. Solution


Use the copy function from the standard File::Copy
module:

use File::Copy;
copy($oldfile, $newfile);

You can do it by hand:

open(IN,  "<", $oldfile)   or die "can't open $oldfile: $!";
open(OUT, ">", $newfile)or die "can't open $newfile: $!";
$blksize = (stat IN)[11] || 16384;
# preferred block size?
while (1) {
$len = sysread IN, $buf, $blksize);
if (!defined $len) {
next if $! =~ /^Interrupted/;
# ^Z and fg on EINTR
die "System read error: $!\n";
}
last unless $len;
$offset = 0;
while ($len) { # Handle partial writes.
defined($written = syswrite OUT, $buf, $len, $offset)
or die "System write error: $!\n";
$len -= $written;
$offset += $written;
};
}
close(IN);
close(OUT);

or you can call your system's copy program:

system("cp $oldfile $newfile"); # unix
system("copy $oldfile $newfile"); # dos, vms

9.3.3. Discussion



The File::Copy
module provides copy and move
functions. These are more convenient than resorting to low-level I/O
calls and more portable than calling system. This
version of move works across file-system
boundaries; the standard Perl built-in rename
(usually) does not.

use File::Copy;
copy("datafile.dat", "datafile.bak")
or die "copy failed: $!";
move("datafile.dat", "datafile.new")
or die "move failed: $!";

Because these functions return only a simple success status, you
can't easily tell which file prevented the copy or move from working.
Copying the files manually lets you pinpoint which files didn't copy,
but it fills your program with complex sysread s
and syswrite s.

9.3.4. See Also


Documentation for the standard File::Copy module (also in Chapter 32
of Programming Perl); the
rename, read, and
syswrite functions in
perlfunc(1) and in Chapter 29 of
Programming Perl

/ 875