|
Външни команди
Exec Exec спира работата на скрипта Ви и стартира каквото сте му посочили. Ако не може да стартира външния процес, връща код за грешка. Не работи както трябва под Perl за Win32. System Стартира външна команда, която се изпълнява заедно със скрипта. Винаги връща отговор, който се попълва във $?. Това означава, че Вие може да тествате, дали програмата Ви работи. Всъщност Вие тествате да видите дали тя може да бъде стартирана, какво прави, когато е стартирана и каквото прави е извън ваш контрол, ако използвате system. С примера по-долу ще илюстрирам system в дейстие. Стартирайте 'vol' от командния ред първо ако не сте запознат с нея за да видите резултата от нея. След това стартирайте 'vole' командата. CODE
Както виждате, успешно системно извикване връща като резултат 0. Неуспешното връща число което е необходимо да разделите на 256 за да намерите истинската върната стойност. Също така забележете, че може да видите и изхода от командата. Backticks Между използването на `` и system и exec има разлики. Те също стартират външни процеси, но връщат изхода от процеса. След това Вие може да правите каквото си поизкате с изходната информация. CODE
Кога да се използват системни извиквания Преди да почнете да използвате външни команди в скрипта си за извикване на net команди, обърнете внимание, че вече има написани отлични модули, които вършат отлична работа, и че всяко стартиране на външна команда забавя скрипта ви. Също така по-добре използвайте readdir, а не `dir` - по-бързо и ефикасно е, това се отнася за всички команди които вътрешни за Perl. Също така се гарантира, че при използването само на вътрешни команди, скрипта ще се изпълнява на 99,99% от всички съществуващи ОС, докато ако използвате външни команди това няма да е така. Стартиране на процес Проблема с backticks е че трябва да се изчака целия процес да завърши и тогава да анализирате и обработвате информацията. Това е голям проблем, ако кодът, който се връща е голям или процеса е бавен. можем да стартираме процес и през канал (pipe) да обработваме информацията, също както го правим с файл. Кодат по-долу е същия като отварянето на файл с две разлики: • Използваме външна команда, а не име на файл. • Канала е |, който следва името на командата. CODE
Oneliners (Скриптове от командния ред) Малък пример Perl код може да се изпълнява директно и от командния ред. За пример: CODE
Достъп до файлове Следващия пример е установена практика за писане на команда за търсене на стринг в даден файл. CODE
CODE
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||









