Initial commit of OpenSPARC T2 architecture model.
[OpenSPARC-T2-SAM] / sam-t2 / devtools / v8plus / man / man3 / Shell.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 "Shell 3"
132.TH Shell 3 "2001-09-21" "perl v5.8.8" "Perl Programmers Reference Guide"
133.SH "NAME"
134Shell \- run shell commands transparently within perl
135.SH "SYNOPSIS"
136.IX Header "SYNOPSIS"
137.Vb 4
138\& use Shell qw(cat ps cp);
139\& $passwd = cat('</etc/passwd');
140\& @pslines = ps('-ww'),
141\& cp("/etc/passwd", "/tmp/passwd");
142.Ve
143.PP
144.Vb 3
145\& # object oriented
146\& my $sh = Shell->new;
147\& print $sh->ls('-l');
148.Ve
149.SH "DESCRIPTION"
150.IX Header "DESCRIPTION"
151.Sh "Caveats"
152.IX Subsection "Caveats"
153This package is included as a show case, illustrating a few Perl features.
154It shouldn't be used for production programs. Although it does provide a
155simple interface for obtaining the standard output of arbitrary commands,
156there may be better ways of achieving what you need.
157.PP
158Running shell commands while obtaining standard output can be done with the
159\&\f(CW\*(C`qx/STRING/\*(C'\fR operator, or by calling \f(CW\*(C`open\*(C'\fR with a filename expression that
160ends with \f(CW\*(C`|\*(C'\fR, giving you the option to process one line at a time.
161If you don't need to process standard output at all, you might use \f(CW\*(C`system\*(C'\fR
162(in preference of doing a print with the collected standard output).
163.PP
164Since Shell.pm and all of the aforementioned techniques use your system's
165shell to call some local command, none of them is portable across different
166systems. Note, however, that there are several built in functions and
167library packages providing portable implementations of functions operating
168on files, such as: \f(CW\*(C`glob\*(C'\fR, \f(CW\*(C`link\*(C'\fR and \f(CW\*(C`unlink\*(C'\fR, \f(CW\*(C`mkdir\*(C'\fR and \f(CW\*(C`rmdir\*(C'\fR,
169\&\f(CW\*(C`rename\*(C'\fR, \f(CW\*(C`File::Compare\*(C'\fR, \f(CW\*(C`File::Copy\*(C'\fR, \f(CW\*(C`File::Find\*(C'\fR etc.
170.PP
171Using Shell.pm while importing \f(CW\*(C`foo\*(C'\fR creates a subroutine \f(CW\*(C`foo\*(C'\fR in the
172namespace of the importing package. Calling \f(CW\*(C`foo\*(C'\fR with arguments \f(CW\*(C`arg1\*(C'\fR,
173\&\f(CW\*(C`arg2\*(C'\fR,... results in a shell command \f(CW\*(C`foo arg1 arg2...\*(C'\fR, where the
174function name and the arguments are joined with a blank. (See the subsection
175on Escaping magic characters.) Since the result is essentially a command
176line to be passed to the shell, your notion of arguments to the Perl
177function is not necessarily identical to what the shell treats as a
178command line token, to be passed as an individual argument to the program.
179Furthermore, note that this implies that \f(CW\*(C`foo\*(C'\fR is callable by file name
180only, which frequently depends on the setting of the program's environment.
181.PP
182Creating a Shell object gives you the opportunity to call any command
183in the usual \s-1OO\s0 notation without requiring you to announce it in the
184\&\f(CW\*(C`use Shell\*(C'\fR statement. Don't assume any additional semantics being
185associated with a Shell object: in no way is it similar to a shell
186process with its environment or current working directory or any
187other setting.
188.Sh "Escaping Magic Characters"
189.IX Subsection "Escaping Magic Characters"
190It is, in general, impossible to take care of quoting the shell's
191magic characters. For some obscure reason, however, Shell.pm quotes
192apostrophes (\f(CW\*(C`'\*(C'\fR) and backslashes (\f(CW\*(C`\e\*(C'\fR) on \s-1UNIX\s0, and spaces and
193quotes (\f(CW\*(C`"\*(C'\fR) on Windows.
194.Sh "Configuration"
195.IX Subsection "Configuration"
196If you set \f(CW$Shell::capture_stderr\fR to true, the module will attempt to
197capture the standard error output of the process as well. This is
198done by adding \f(CW\*(C`2>&1\*(C'\fR to the command line, so don't try this on
199a system not supporting this redirection.
200.PP
201If you set \f(CW$Shell::raw\fR to true no quoting whatsoever is done.
202.SH "BUGS"
203.IX Header "BUGS"
204Quoting should be off by default.
205.PP
206It isn't possible to call shell built in commands, but it can be
207done by using a workaround, e.g. shell( '\-c', 'set' ).
208.PP
209Capturing standard error does not work on some systems (e.g. \s-1VMS\s0).
210.SH "AUTHOR"
211.IX Header "AUTHOR"
212.Vb 5
213\& Date: Thu, 22 Sep 94 16:18:16 -0700
214\& Message-Id: <9409222318.AA17072@scalpel.netlabs.com>
215\& To: perl5-porters@isu.edu
216\& From: Larry Wall <lwall@scalpel.netlabs.com>
217\& Subject: a new module I just wrote
218.Ve
219.PP
220Here's one that'll whack your mind a little out.
221.PP
222.Vb 1
223\& #!/usr/bin/perl
224.Ve
225.PP
226.Vb 1
227\& use Shell;
228.Ve
229.PP
230.Vb 2
231\& $foo = echo("howdy", "<funny>", "world");
232\& print $foo;
233.Ve
234.PP
235.Vb 2
236\& $passwd = cat("</etc/passwd");
237\& print $passwd;
238.Ve
239.PP
240.Vb 2
241\& sub ps;
242\& print ps -ww;
243.Ve
244.PP
245.Vb 1
246\& cp("/etc/passwd", "/etc/passwd.orig");
247.Ve
248.PP
249That's maybe too gonzo. It actually exports an \s-1AUTOLOAD\s0 to the current
250package (and uncovered a bug in Beta 3, by the way). Maybe the usual
251usage should be
252.PP
253.Vb 1
254\& use Shell qw(echo cat ps cp);
255.Ve
256.PP
257Larry Wall
258.PP
259Changes by Jenda@Krynicky.cz and Dave Cottle <d.cottle@csc.canterbury.ac.nz>.
260.PP
261Changes for \s-1OO\s0 syntax and bug fixes by Casey West <casey@geeknest.com>.
262.PP
263\&\f(CW$Shell::raw\fR and pod rewrite by Wolfgang Laun.