Initial commit of OpenSPARC T2 architecture model.
[OpenSPARC-T2-SAM] / sam-t2 / devtools / v9 / man / man3 / MIME::Base64.3
CommitLineData
920dae64
AT
1.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
2.\"
3.\" Standard preamble:
4.\" ========================================================================
5.de Sh \" Subsection heading
6.br
7.if t .Sp
8.ne 5
9.PP
10\fB\\$1\fR
11.PP
12..
13.de Sp \" Vertical space (when we can't use .PP)
14.if t .sp .5v
15.if n .sp
16..
17.de Vb \" Begin verbatim text
18.ft CW
19.nf
20.ne \\$1
21..
22.de Ve \" End verbatim text
23.ft R
24.fi
25..
26.\" Set up some character translations and predefined strings. \*(-- will
27.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
28.\" double quote, and \*(R" will give a right double quote. | will give a
29.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to
30.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C'
31.\" expand to `' in nroff, nothing in troff, for use with C<>.
32.tr \(*W-|\(bv\*(Tr
33.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
34.ie n \{\
35. ds -- \(*W-
36. ds PI pi
37. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
38. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
39. ds L" ""
40. ds R" ""
41. ds C` ""
42. ds C' ""
43'br\}
44.el\{\
45. ds -- \|\(em\|
46. ds PI \(*p
47. ds L" ``
48. ds R" ''
49'br\}
50.\"
51.\" If the F register is turned on, we'll generate index entries on stderr for
52.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
53.\" entries marked with X<> in POD. Of course, you'll have to process the
54.\" output yourself in some meaningful fashion.
55.if \nF \{\
56. de IX
57. tm Index:\\$1\t\\n%\t"\\$2"
58..
59. nr % 0
60. rr F
61.\}
62.\"
63.\" For nroff, turn off justification. Always turn off hyphenation; it makes
64.\" way too many mistakes in technical documents.
65.hy 0
66.if n .na
67.\"
68.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
69.\" Fear. Run. Save yourself. No user-serviceable parts.
70. \" fudge factors for nroff and troff
71.if n \{\
72. ds #H 0
73. ds #V .8m
74. ds #F .3m
75. ds #[ \f1
76. ds #] \fP
77.\}
78.if t \{\
79. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
80. ds #V .6m
81. ds #F 0
82. ds #[ \&
83. ds #] \&
84.\}
85. \" simple accents for nroff and troff
86.if n \{\
87. ds ' \&
88. ds ` \&
89. ds ^ \&
90. ds , \&
91. ds ~ ~
92. ds /
93.\}
94.if t \{\
95. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
96. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
97. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
98. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
99. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
100. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
101.\}
102. \" troff and (daisy-wheel) nroff accents
103.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
104.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
105.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
106.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
107.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
108.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
109.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
110.ds ae a\h'-(\w'a'u*4/10)'e
111.ds Ae A\h'-(\w'A'u*4/10)'E
112. \" corrections for vroff
113.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
114.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
115. \" for low resolution devices (crt and lpr)
116.if \n(.H>23 .if \n(.V>19 \
117\{\
118. ds : e
119. ds 8 ss
120. ds o a
121. ds d- d\h'-1'\(ga
122. ds D- D\h'-1'\(hy
123. ds th \o'bp'
124. ds Th \o'LP'
125. ds ae ae
126. ds Ae AE
127.\}
128.rm #[ #] #H #V #F C
129.\" ========================================================================
130.\"
131.IX Title "MIME::Base64 3"
132.TH MIME::Base64 3 "2001-09-21" "perl v5.8.8" "Perl Programmers Reference Guide"
133.SH "NAME"
134MIME::Base64 \- Encoding and decoding of base64 strings
135.SH "SYNOPSIS"
136.IX Header "SYNOPSIS"
137.Vb 1
138\& use MIME::Base64;
139.Ve
140.PP
141.Vb 2
142\& $encoded = encode_base64('Aladdin:open sesame');
143\& $decoded = decode_base64($encoded);
144.Ve
145.SH "DESCRIPTION"
146.IX Header "DESCRIPTION"
147This module provides functions to encode and decode strings into and from the
148base64 encoding specified in \s-1RFC\s0 2045 \- \fI\s-1MIME\s0 (Multipurpose Internet
149Mail Extensions)\fR. The base64 encoding is designed to represent
150arbitrary sequences of octets in a form that need not be humanly
151readable. A 65\-character subset ([A\-Za\-z0\-9+/=]) of US-ASCII is used,
152enabling 6 bits to be represented per printable character.
153.PP
154The following functions are provided:
155.IP "encode_base64($str)" 4
156.IX Item "encode_base64($str)"
157.PD 0
158.ie n .IP "encode_base64($str, $eol);" 4
159.el .IP "encode_base64($str, \f(CW$eol\fR);" 4
160.IX Item "encode_base64($str, $eol);"
161.PD
162Encode data by calling the \fIencode_base64()\fR function. The first
163argument is the string to encode. The second argument is the
164line-ending sequence to use. It is optional and defaults to \*(L"\en\*(R". The
165returned encoded string is broken into lines of no more than 76
166characters each and it will end with \f(CW$eol\fR unless it is empty. Pass an
167empty string as second argument if you do not want the encoded string
168to be broken into lines.
169.IP "decode_base64($str)" 4
170.IX Item "decode_base64($str)"
171Decode a base64 string by calling the \fIdecode_base64()\fR function. This
172function takes a single argument which is the string to decode and
173returns the decoded data.
174.Sp
175Any character not part of the 65\-character base64 subset is
176silently ignored. Characters occurring after a '=' padding character
177are never decoded.
178.Sp
179If the length of the string to decode, after ignoring
180non\-base64 chars, is not a multiple of 4 or if padding occurs too early,
181then a warning is generated if perl is running under \f(CW\*(C`\-w\*(C'\fR.
182.PP
183If you prefer not to import these routines into your namespace, you can
184call them as:
185.PP
186.Vb 3
187\& use MIME::Base64 ();
188\& $encoded = MIME::Base64::encode($decoded);
189\& $decoded = MIME::Base64::decode($encoded);
190.Ve
191.SH "DIAGNOSTICS"
192.IX Header "DIAGNOSTICS"
193The following warnings can be generated if perl is invoked with the
194\&\f(CW\*(C`\-w\*(C'\fR switch:
195.IP "Premature end of base64 data" 4
196.IX Item "Premature end of base64 data"
197The number of characters to decode is not a multiple of 4. Legal
198base64 data should be padded with one or two \*(L"=\*(R" characters to make
199its length a multiple of 4. The decoded result will be the same
200whether the padding is present or not.
201.IP "Premature padding of base64 data" 4
202.IX Item "Premature padding of base64 data"
203The '=' padding character occurs as the first or second character
204in a base64 quartet.
205.PP
206The following exception can be raised:
207.IP "Wide character in subroutine entry" 4
208.IX Item "Wide character in subroutine entry"
209The string passed to \fIencode_base64()\fR contains characters with code
210above 255. The base64 encoding is only defined for single-byte
211characters. Use the Encode module to select the byte encoding you
212want.
213.SH "EXAMPLES"
214.IX Header "EXAMPLES"
215If you want to encode a large file, you should encode it in chunks
216that are a multiple of 57 bytes. This ensures that the base64 lines
217line up and that you do not end up with padding in the middle. 57
218bytes of data fills one complete base64 line (76 == 57*4/3):
219.PP
220.Vb 1
221\& use MIME::Base64 qw(encode_base64);
222.Ve
223.PP
224.Vb 4
225\& open(FILE, "/var/log/wtmp") or die "$!";
226\& while (read(FILE, $buf, 60*57)) {
227\& print encode_base64($buf);
228\& }
229.Ve
230.PP
231or if you know you have enough memory
232.PP
233.Vb 3
234\& use MIME::Base64 qw(encode_base64);
235\& local($/) = undef; # slurp
236\& print encode_base64(<STDIN>);
237.Ve
238.PP
239The same approach as a command line:
240.PP
241.Vb 1
242\& perl -MMIME::Base64 -0777 -ne 'print encode_base64($_)' <file
243.Ve
244.PP
245Decoding does not need slurp mode if every line contains a multiple
246of four base64 chars:
247.PP
248.Vb 1
249\& perl -MMIME::Base64 -ne 'print decode_base64($_)' <file
250.Ve
251.PP
252Perl v5.8 and better allow extended Unicode characters in strings.
253Such strings cannot be encoded directly, as the base64
254encoding is only defined for single-byte characters. The solution is
255to use the Encode module to select the byte encoding you want. For
256example:
257.PP
258.Vb 2
259\& use MIME::Base64 qw(encode_base64);
260\& use Encode qw(encode);
261.Ve
262.PP
263.Vb 2
264\& $encoded = encode_base64(encode("UTF-8", "\ex{FFFF}\en"));
265\& print $encoded;
266.Ve
267.SH "COPYRIGHT"
268.IX Header "COPYRIGHT"
269Copyright 1995\-1999, 2001\-2004 Gisle Aas.
270.PP
271This library is free software; you can redistribute it and/or
272modify it under the same terms as Perl itself.
273.PP
274Distantly based on LWP::Base64 written by Martijn Koster
275<m.koster@nexor.co.uk> and Joerg Reichelt <j.reichelt@nexor.co.uk> and
276code posted to comp.lang.perl <3pd2lp$6gf@wsinti07.win.tue.nl> by Hans
277Mulder <hansm@wsinti07.win.tue.nl>
278.PP
279The \s-1XS\s0 implementation uses code from metamail. Copyright 1991 Bell
280Communications Research, Inc. (Bellcore)
281.SH "SEE ALSO"
282.IX Header "SEE ALSO"
283MIME::QuotedPrint