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

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

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

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

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

فونت

اندازه قلم

+ - پیش فرض

حالت نمایش

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



9.1. Getting and Setting Timestamps


9.1.1. Problem





You need to retrieve or
alter when a file was last modified (written or changed) or accessed
(read).

9.1.2. Solution



Use
stat to get those times and
utime to set them. Both functions are built into
Perl:

($READTIME, $WRITETIME) = (stat($filename))[8,9];
utime($NEWREADTIME, $NEWWRITETIME, $filename);

9.1.3. Discussion


As explained in the Introduction, three different times are
associated with an inode in the traditional Unix filesystem. Of
these, any user can set the atime and
mtime with utime, assuming the
user has write access to the parent directory of the file. There is
effectively no way to change the ctime. This
example shows how to call utime:

$SECONDS_PER_DAY = 60 * 60 * 24;
($atime, $mtime) = (stat($file))[8,9];
$atime -= 7 * $SECONDS_PER_DAY;
$mtime -= 7 * $SECONDS_PER_DAY;
utime($atime, $mtime, $file)
or die "couldn't backdate $file by a week w/ utime: $!";

You must call utime with both
atime and mtime values. If you
want to change only one, you must call stat first
to get the other:

$mtime = (stat $file)[9];
utime(time, $mtime, $file);

This is easier to understand if you use File::stat:

use File::stat;
utime(time, stat($file)->mtime, $file);

Use utime to make it appear as though you never
touched a file at all (beyond its ctime being
updated). For example, to edit a file, use the program in
Example 9-1.

Example 9-1. uvi


#!/usr/bin/perl -w
# uvi - vi a file without changing its access times
$file = shift or die "usage: uvi filename\n";
($atime, $mtime) = (stat($file))[8,9];
system($ENV{EDITOR} || "vi", $file);
utime($atime, $mtime, $file)
or die "couldn't restore $file to orig times: $!";

9.1.4. See Also


The stat and utime functions in
perlfunc(1) and in Chapter 29 of
Programming Perl; the standard File::stat
module (also in Chapter 32 of Programming
Perl
); your system's utime(3)
manpage



9. Directories9.2. Deleting a File




Copyright © 2003 O'Reilly & Associates. All rights reserved.

/ 875