shell

Shell - perldoc.perl.org perldoc.perl.org Manual: Overview Tutorials FAQs History / Changes Licence Reference: Language Functions Operators Special variables Pragmas Core modules Utilities Internals Platform specific Links: CPAN Perl.org Perl.com Perl Buzz Perl 5 Wiki Perl Jobs Perl Mongers Perl Monks Planet Perl Use Perl Contact: Site maintained byJon Allen (JJ) Last updated on22 February 2008 See the project page for more details Show navigation -- Perl 5.10.0 documentation -- Show toolbar Home > Core modules > S > Shell ShellView as PDFNAMESYNOPSISDESCRIPTIONCaveatsEscaping Magic CharactersConfigurationBUGSAUTHORNAME Shell - run shell commands transparently within perl SYNOPSIS use Shell qw(cat ps cp); $passwd = cat('new; print $sh->ls('-l'); DESCRIPTION Caveats This package is included as a show case, illustrating a few Perl features. It shouldn't be used for production programs. Although it does provide a simple interface for obtaining the standard output of arbitrary commands, there may be better ways of achieving what you need. Running shell commands while obtaining standard output can be done with the qx/STRING/ operator, or by calling open with a filename expression that ends with |, giving you the option to process one line at a time. If you don't need to process standard output at all, you might use system (in preference of doing a print with the collected standard output). Since Shell.pm and all of the aforementioned techniques use your system's shell to call some local command, none of them is portable across different systems. Note, however, that there are several built in functions and library packages providing portable implementations of functions operating on files, such as: glob, link and unlink, mkdir and rmdir, rename, File::Compare , File::Copy , File::Find etc. Using Shell.pm while importing foo creates a subroutine foo in the namespace of the importing package. Calling foo with arguments arg1 , arg2 ,... results in a shell command foo arg1 arg2... , where the function name and the arguments are joined with a blank. (See the subsection on Escaping magic characters.) Since the result is essentially a command line to be passed to the shell, your notion of arguments to the Perl function is not necessarily identical to what the shell treats as a command line token, to be passed as an individual argument to the program. Furthermore, note that this implies that foo is callable by file name only, which frequently depends on the setting of the program's environment. Creating a Shell object gives you the opportunity to call any command in the usual OO notation without requiring you to announce it in the use Shell statement. Don't assume any additional semantics being associated with a Shell object: in no way is it similar to a shell process with its environment or current working directory or any other setting. Escaping Magic Characters It is, in general, impossible to take care of quoting the shell's magic characters. For some obscure reason, however, Shell.pm quotes apostrophes (') and backslashes (\ ) on UNIX, and spaces and quotes (") on Windows. Configuration If you set $Shell::capture_stderr to 1, the module will attempt to capture the standard error output of the process as well. This is done by adding 2>&1 to the command line, so don't try this on a system not supporting this redirection. Setting $Shell::capture_stderr to -1 will send standard error to the bit bucket (i.e., the equivalent of adding 2>/dev/null to the command line). The same caveat regarding redirection applies. If you set $Shell::raw to true no quoting whatsoever is done. BUGS Quoting should be off by default. It isn't possible to call shell built in commands, but it can be done by using a workaround, e.g. shell( '-c', 'set' ). Capturing standard error does not work on some systems (e.g. VMS). AUTHOR Date: Thu, 22 Sep 94 16:18:16 -0700 Message-Id: <9409222318.AA17072@scalpel.netlabs.com> To: perl5-porters@isu.edu From: Larry Wall Subject: a new module I just wroteHere's one that'll whack your mind a little out. #!/usr/bin/perl use Shell; $foo = echo("howdy", "", "world"); print $foo; $passwd = cat(". Changes for OO syntax and bug fixes by Casey West . $Shell::raw and pod rewrite by Wolfgang Laun. Rewritten to use closures rather than eval "string" by Adriano Ferreira. Search: Labels: Add this page разделы пакет гриппер peg perego venezia скс скрипт рассылка объвлений li-da асбест кристофер брэнд торговый витрина холодильник бош внутренний перегородка схема зал вахтангова сборщик долг слоеный изделие пионовая беседка southpark тройник перех фмс решетка дренажный аэробика мячом электрокамин dimplex model plasma (sp9) тонировка болен алкоголизмом холодильник уценка neri karra кожгалантерея автошкола встраиваемый вытяжка три цвета: красный штамповка снегоход буран гипсокартон 5004.13 (крышка) антенна бустер рак кишка снегоуборочный машина северный корона купить ниппель перех восстановление файл купить каболка тиристорный контактор поставка холодильный камера снегоход буран ножной пластырь ферромолибден ночной очки переработка резина время архангельск против рак огнестойкий краска сканер штрихкодов стелаж пищеблок клеить нанесение пвс портативный радиостанция корвет-телеком грунт конкурентный стратегия купить стиральный охота силикон квн съемка кулер процессор купить ломтерезку варочный поверхность hansa краска ржавчина купить угольник перех спецобувь заказ акриловый вставка вкладыш мва nokia 6021 купить shimadzu свойство краска снегоход буран машина r-600 газонокосилка stiga ленинградский вокзал билет shell промывка инжектор чиллеры сервис альфа лаваль цвет камуфлир белый кофе лак orly циклон цол слимент лифт лечение иглоукалыванием выделение кислорода мустанг лазер лечение щитовидный железа квн стальной топкий spartherm селин дион билет клеить нанесение консультирование организация басейны intex прайс эфирный антенна эдас-134 аденома предст.ж-зы газовый заправка рассылка сбор д/полоскания горло зубной боль новосельский доломит нужен фотограф пазл доставка окон электрокардиограф танго кэш арочный конструкция виные холодильник лечение алкоголизма 1000 холодильник вытяжка детский гинеколог 5440.14 (крышка) цвет гармония степ-аэробика бордюр обоев купить электроэнцефалограф морозильный витрина перегородка сантехкабин адресный база данный тонирование авто цвет камуфлир кс-4361а автоматический оповещение черный кофе бордюр сварочный пост lida измерительный комплекс к2-79 доставка кулеров кострома коммерческий intex доставка циклон батарейный вечерний платье штамповка измерительный комплекс к2-79 стенд доставка ноутбук кулер 754 конвейер светящийся краска купить k800i доломит shell