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

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

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

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

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

فونت

اندازه قلم

+ - پیش فرض

حالت نمایش

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

8.23. Pretending a String Is a File


8.23.1. Problem



You have data in string, but would like
to treat it as a file. For example, you have a subroutine that
expects a filehandle as an argument, but you would like that
subroutine to work directly on the data in your string instead.
Additionally, you don''t want to write the data to a temporary file.

8.23.2. Solution


Use the scalar I/O in Perl v5.8:

open($fh, "+<", \$string);
# read and write contents of $string

8.23.3. Discussion


Perl''s I/O
layers include support for input and output from a scalar. When you
read a record with <$fh>, you are reading
the next line from $string. When you write a
record with print, you change
$string. You can pass $fh to a
function that expects a filehandle, and that subroutine need never
know that it''s really working with data in a string.

Perl respects the various access modes in open for
strings, so you can specify that the strings be opened as read-only,
with truncation, in append mode, and so on:

open($fh, "<",  \$string);   # read only
open($fh, ">", \$string); # write only, discard original contents
open($fh, "+>", \$string); # read and write, discard original contents
open($fh, "+<", \$string); # read and write, preserve original contents

These handles behave in all respects like regular filehandles, so all
I/O functions work, such as seek,
truncate, sysread, and friends.

8.23.4. See Also


The open function in
perlfunc(1) and in Chapter 29 of
Programming Perl; Recipe 8.12 and Recipe 8.19

/ 875