Add built local::lib
[catagits/Gitalist.git] / local-lib5 / man / man3 / IO::String.3pm
1 .\" Automatically generated by Pod::Man 2.22 (Pod::Simple 3.10)
2 .\"
3 .\" Standard preamble:
4 .\" ========================================================================
5 .de Sp \" Vertical space (when we can't use .PP)
6 .if t .sp .5v
7 .if n .sp
8 ..
9 .de Vb \" Begin verbatim text
10 .ft CW
11 .nf
12 .ne \\$1
13 ..
14 .de Ve \" End verbatim text
15 .ft R
16 .fi
17 ..
18 .\" Set up some character translations and predefined strings.  \*(-- will
19 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
20 .\" double quote, and \*(R" will give a right double quote.  \*(C+ will
21 .\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
22 .\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
23 .\" nothing in troff, for use with C<>.
24 .tr \(*W-
25 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
26 .ie n \{\
27 .    ds -- \(*W-
28 .    ds PI pi
29 .    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
30 .    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
31 .    ds L" ""
32 .    ds R" ""
33 .    ds C` ""
34 .    ds C' ""
35 'br\}
36 .el\{\
37 .    ds -- \|\(em\|
38 .    ds PI \(*p
39 .    ds L" ``
40 .    ds R" ''
41 'br\}
42 .\"
43 .\" Escape single quotes in literal strings from groff's Unicode transform.
44 .ie \n(.g .ds Aq \(aq
45 .el       .ds Aq '
46 .\"
47 .\" If the F register is turned on, we'll generate index entries on stderr for
48 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
49 .\" entries marked with X<> in POD.  Of course, you'll have to process the
50 .\" output yourself in some meaningful fashion.
51 .ie \nF \{\
52 .    de IX
53 .    tm Index:\\$1\t\\n%\t"\\$2"
54 ..
55 .    nr % 0
56 .    rr F
57 .\}
58 .el \{\
59 .    de IX
60 ..
61 .\}
62 .\"
63 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
64 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
65 .    \" fudge factors for nroff and troff
66 .if n \{\
67 .    ds #H 0
68 .    ds #V .8m
69 .    ds #F .3m
70 .    ds #[ \f1
71 .    ds #] \fP
72 .\}
73 .if t \{\
74 .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
75 .    ds #V .6m
76 .    ds #F 0
77 .    ds #[ \&
78 .    ds #] \&
79 .\}
80 .    \" simple accents for nroff and troff
81 .if n \{\
82 .    ds ' \&
83 .    ds ` \&
84 .    ds ^ \&
85 .    ds , \&
86 .    ds ~ ~
87 .    ds /
88 .\}
89 .if t \{\
90 .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
91 .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
92 .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
93 .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
94 .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
95 .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
96 .\}
97 .    \" troff and (daisy-wheel) nroff accents
98 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
99 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
100 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
101 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
102 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
103 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
104 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
105 .ds ae a\h'-(\w'a'u*4/10)'e
106 .ds Ae A\h'-(\w'A'u*4/10)'E
107 .    \" corrections for vroff
108 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
109 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
110 .    \" for low resolution devices (crt and lpr)
111 .if \n(.H>23 .if \n(.V>19 \
112 \{\
113 .    ds : e
114 .    ds 8 ss
115 .    ds o a
116 .    ds d- d\h'-1'\(ga
117 .    ds D- D\h'-1'\(hy
118 .    ds th \o'bp'
119 .    ds Th \o'LP'
120 .    ds ae ae
121 .    ds Ae AE
122 .\}
123 .rm #[ #] #H #V #F C
124 .\" ========================================================================
125 .\"
126 .IX Title "String 3"
127 .TH String 3 "2005-12-05" "perl v5.8.7" "User Contributed Perl Documentation"
128 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
129 .\" way too many mistakes in technical documents.
130 .if n .ad l
131 .nh
132 .SH "NAME"
133 IO::String \- Emulate file interface for in\-core strings
134 .SH "SYNOPSIS"
135 .IX Header "SYNOPSIS"
136 .Vb 4
137 \& use IO::String;
138 \& $io = IO::String\->new;
139 \& $io = IO::String\->new($var);
140 \& tie *IO, \*(AqIO::String\*(Aq;
141 \&
142 \& # read data
143 \& <$io>;
144 \& $io\->getline;
145 \& read($io, $buf, 100);
146 \&
147 \& # write data
148 \& print $io "string\en";
149 \& $io\->print(@data);
150 \& syswrite($io, $buf, 100);
151 \&
152 \& select $io;
153 \& printf "Some text %s\en", $str;
154 \&
155 \& # seek
156 \& $pos = $io\->getpos;
157 \& $io\->setpos(0);        # rewind
158 \& $io\->seek(\-30, \-1);
159 \& seek($io, 0, 0);
160 .Ve
161 .SH "DESCRIPTION"
162 .IX Header "DESCRIPTION"
163 The \f(CW\*(C`IO::String\*(C'\fR module provides the \f(CW\*(C`IO::File\*(C'\fR interface for in-core
164 strings.  An \f(CW\*(C`IO::String\*(C'\fR object can be attached to a string, and
165 makes it possible to use the normal file operations for reading or
166 writing data, as well as for seeking to various locations of the string.
167 This is useful when you want to use a library module that only
168 provides an interface to file handles on data that you have in a string
169 variable.
170 .PP
171 Note that perl\-5.8 and better has built-in support for \*(L"in memory\*(R"
172 files, which are set up by passing a reference instead of a filename
173 to the \fIopen()\fR call. The reason for using this module is that it
174 makes the code backwards compatible with older versions of Perl.
175 .PP
176 The \f(CW\*(C`IO::String\*(C'\fR module provides an interface compatible with
177 \&\f(CW\*(C`IO::File\*(C'\fR as distributed with \fI\s-1IO\-1\s0.20\fR, but the following methods
178 are not available: new_from_fd, fdopen, format_write,
179 format_page_number, format_lines_per_page, format_lines_left,
180 format_name, format_top_name.
181 .PP
182 The following methods are specific to the \f(CW\*(C`IO::String\*(C'\fR class:
183 .ie n .IP "$io = IO::String\->new" 4
184 .el .IP "\f(CW$io\fR = IO::String\->new" 4
185 .IX Item "$io = IO::String->new"
186 .PD 0
187 .ie n .IP "$io = IO::String\->new( $string )" 4
188 .el .IP "\f(CW$io\fR = IO::String\->new( \f(CW$string\fR )" 4
189 .IX Item "$io = IO::String->new( $string )"
190 .PD
191 The constructor returns a newly-created \f(CW\*(C`IO::String\*(C'\fR object.  It
192 takes an optional argument, which is the string to read from or write
193 into.  If no \f(CW$string\fR argument is given, then an internal buffer
194 (initially empty) is allocated.
195 .Sp
196 The \f(CW\*(C`IO::String\*(C'\fR object returned is tied to itself.  This means
197 that you can use most Perl I/O built-ins on it too: readline, <>, getc,
198 print, printf, syswrite, sysread, close.
199 .ie n .IP "$io\->open" 4
200 .el .IP "\f(CW$io\fR\->open" 4
201 .IX Item "$io->open"
202 .PD 0
203 .ie n .IP "$io\->open( $string )" 4
204 .el .IP "\f(CW$io\fR\->open( \f(CW$string\fR )" 4
205 .IX Item "$io->open( $string )"
206 .PD
207 Attaches an existing IO::String object to some other \f(CW$string\fR, or
208 allocates a new internal buffer (if no argument is given).  The
209 position is reset to 0.
210 .ie n .IP "$io\->string_ref" 4
211 .el .IP "\f(CW$io\fR\->string_ref" 4
212 .IX Item "$io->string_ref"
213 Returns a reference to the string that is attached to
214 the \f(CW\*(C`IO::String\*(C'\fR object.  Most useful when you let the \f(CW\*(C`IO::String\*(C'\fR
215 create an internal buffer to write into.
216 .ie n .IP "$io\->pad" 4
217 .el .IP "\f(CW$io\fR\->pad" 4
218 .IX Item "$io->pad"
219 .PD 0
220 .ie n .IP "$io\->pad( $char )" 4
221 .el .IP "\f(CW$io\fR\->pad( \f(CW$char\fR )" 4
222 .IX Item "$io->pad( $char )"
223 .PD
224 Specifies the padding to use if
225 the string is extended by either the \fIseek()\fR or \fItruncate()\fR methods.  It
226 is a single character and defaults to \*(L"\e0\*(R".
227 .ie n .IP "$io\->pos" 4
228 .el .IP "\f(CW$io\fR\->pos" 4
229 .IX Item "$io->pos"
230 .PD 0
231 .ie n .IP "$io\->pos( $newpos )" 4
232 .el .IP "\f(CW$io\fR\->pos( \f(CW$newpos\fR )" 4
233 .IX Item "$io->pos( $newpos )"
234 .PD
235 Yet another interface for reading and setting the current read/write
236 position within the string (the normal getpos/setpos/tell/seek
237 methods are also available).  The \fIpos()\fR method always returns the
238 old position, and if you pass it an argument it sets the new
239 position.
240 .Sp
241 There is (deliberately) a difference between the \fIsetpos()\fR and \fIseek()\fR
242 methods in that \fIseek()\fR extends the string (with the specified
243 padding) if you go to a location past the end, whereas \fIsetpos()\fR
244 just snaps back to the end.  If \fItruncate()\fR is used to extend the string,
245 then it works as \fIseek()\fR.
246 .SH "BUGS"
247 .IX Header "BUGS"
248 In Perl versions < 5.6, the \s-1TIEHANDLE\s0 interface was incomplete.
249 If you use such a Perl, then \fIseek()\fR, \fItell()\fR, \fIeof()\fR, \fIfileno()\fR, \fIbinmode()\fR will
250 not do anything on an \f(CW\*(C`IO::String\*(C'\fR handle.  See perltie for
251 details.
252 .SH "SEE ALSO"
253 .IX Header "SEE ALSO"
254 IO::File, IO::Stringy, \*(L"open\*(R" in perlfunc
255 .SH "COPYRIGHT"
256 .IX Header "COPYRIGHT"
257 Copyright 1998\-2005 Gisle Aas.
258 .PP
259 This library is free software; you can redistribute it and/or
260 modify it under the same terms as Perl itself.