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

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

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

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

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

فونت

اندازه قلم

+ - پیش فرض

حالت نمایش

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










25.3. Files and Filesystems



File path components are separated with / on Unix,
with \ on Windows, and with : on
Macs. Some systems support neither hard links
(link) nor symbolic links
(symlink, readlink,
lstat). Some systems pay attention to
capitalization of filenames, some don''t, and some pay attention when
creating files but not when reading them.

There are modules that can help. The standard
File::Spec modules provide some functions of the
Right Thing persuasion:


use File::Spec::Functions;
chdir( updir() ); # go up one directory
$file = catfile( curdir(), ''temp'', ''file.txt'' );


That last line reads in ./temp/file.txt on Unix
and Windows, or :temp:file.txt on Macs, or
[.temp]file.txt on VMS, and stores the file''s
contents in $file.

The File::Basename module, another
platform-tolerant module bundled with Perl, splits a pathname into its
components: the base filename, the full path to the directory, and the
file suffix.

Here are some tips for writing portable file-manipulating Perl programs:




  • Don''t use two files of the same name with different case, like
    test.pl and Test.pl, since some
    platforms ignore capitalization.



  • Constrain filenames to the 8.3 convention (eight-letter names and
    three-letter extensions) where possible. You can often get away with longer
    filenames as long as you make sure the filenames will remain unique when
    shoved through an 8.3-sized hole in the wall. (Hey, it''s gotta be easier than
    shoving a camel through the eye of a needle.)



  • Minimize nonalphanumeric characters in filenames. Using underscores is
    often okay, but it wastes a character that could better be used for uniqueness
    on 8.3 systems. (Remember, that''s why we don''t usually put underscores
    into module names.)




  • Likewise, when using the AutoSplit module, try to constrain your
    subroutine names to eight characters or less, and don''t give two
    subroutines the same name with different case. If you need longer
    subroutine names, make the first eight characters of each unique.



  • Always use < explicitly to open a file for reading;
    otherwise, on systems that allow punctuation in filenames, a
    file prefixed with a > character could result in a file being
    wiped out, and a file prefixed with a | character could result in a
    pipe open. That''s because the two-argument form of open is magical
    and will interpret characters like >, <, and |, which
    may be the wrong thing to do. (Except when it''s right.)


    open(FILE,      $existing_file)  or die $!;  # wrongish
    open(FILE, "<$existing_file") or die $!; # righter
    open(FILE, "<", $existing_file) or die $!; # righterer




  • Don''t assume text files will end with a newline. They should, but
    sometimes people forget, especially when their text editor helps them forget.








/ 875