Tanulás perl
Az awk programok konvertálása Perl programokba
A Perl egyik leginkább figyelemre méltó tulajdonsága az, hogy ez az awk nyelv szemantikus szupersettje (legalábbis). Gyakorlati szempontból ez azt jelenti, hogy ha bármit is megtehetsz awk-ban, ezt Perlben is megteheti. A Perl azonban nem rendelkezik szinkatikus kompatibilitással az awk-val. Például az NR változó (az input rekord száma) awk a Perl-ben $ -ként van ábrázolva.
Ha van egy ^ programja, és szeretné végrehajtani a Perl változatát, akkor végrehajthatja a program mechanikus átalakítását az a2p segédprogram segítségével, amely a Perl disztribúcióban található. Ez a segédprogram átalakítja az awk szintaktikáját a Perl szintaxisra, és létrehozhat egy közvetlenül végrehajtható Perl szkriptet az ou programok túlnyomó többségéhez.
$ a2p
Az a2p szabványos kimenetét közvetlenül is átirányíthatja Perl-be, mert a Perl-tolmács elfogadja a programot a standard bemenetről, ha megkapja ezt az utasítást:
$ a2p A lámák száma 15 Perlben való használatra átalakítva az aw ^ script általában ugyanolyan funkciót végez, gyakran nagyobb sebességgel, természetesen az awk hosszúságának, a paraméterek számának stb. Néhány átalakított Perl program futhat lassabban; Az awA műveletnek megfelelő Perl-művelet nem feltétlenül a leghatékonyabb Perl-kód, szemben a manuálisan beírt értékkel. Lehet, hogy optimalizálni szeretné az átalakított Perl kódot, vagy hozzáadja a funkciót a program Perl verziójához. Ez meglehetősen egyszerű, mivel az eredményül kapott Perl-kód könnyen olvasható (mivel a fordítást automatikusan végezzük el, nagyszerű eredménynek kell tekinteni). Sed programok konvertálása Perl programokba Talán meg fogja találni, hogy megismétlik magunkat, de hiszem, mit fogunk mondani? És itt van: Perl szemantikus szupersett nemcsak awk, hanem sed. Az elosztó készlet egy sed-RetI átalakítóval rendelkezik, az s2p néven. Mint a2p, az s2p a szabványos bemenetektől érkezik-сценарий и направляет на стандартний вывод Perl-программу. В отличие от результата работы а2р, преобразованная программа редко ведет себя не так, как нужно, позтому вы вполне можете рассчитывать на ее нормальную работу (при отсутствии дефектов в самой s2p или Perl). Az átalakított 5Є / / -programok gyorsabban vagy lassabban tudnak dolgozni, mint az eredetiek. Rendszerint sokkal gyorsabban dolgoznak (köszönhetően a jól optimalizált Perl programoknak a szabályos kifejezések feldolgozásához). Egy átalakított waf-parancsfájl a -n opcióval vagy anélkül működhet. A -n opció ugyanazt jelenti, mint a megfelelő sed gomb. Ennek az opciónak a használatához az átalakított parancsfájlnak meg kell küldenie magát a C előfeldolgozónak, ami kissé lassítja a dobozt. Ha znaєte ami mindig okoz az átalakított WDF-script -p paraméterrel, vagy anélkül (például amikor konvertáló wfif írásmódot használják nagy jól ismert érvek shell-programok), akkor értesíti a közüzemi kb S2P ztom (via kulcsok - n és -p), és optimalizálja a szkriptet a kiválasztott kulcsra. Például a Perl nyelv sokoldalúságának és erejének bemutatásával kapcsolatban megjegyezzük, hogy az s2p fordító Perl-ben van írva. Ha szeretné látni, hogyan Larry programok Perl, megnézzük ztot fordító -, de először ül le úgy, hogy ne essen (még figyelembe véve azt a tényt, hogy az LRA nagyon régi kódot, tekintettel a nem változik 2-es verzió). Héj parancsfájlok konvertálása Perl programokba Valószínűleg úgy gondoltad, hogy ez egy átalakító, amely a shell parancsfájlokat Perl programokra konvertálja? És itt nem. Sokan kérnek egy ilyen programot, de a probléma az, hogy a script nagy részét nem teszi meg. A legtöbb shell parancsfájl szinte teljes időt tölt az egyes programok hívásain, hogy kivonják a vonaldarabokat, összehasonlítsák a számokat, összefésüljék a fájlokat, töröljék a könyvtárakat, és így tovább. Az ilyen parancsfájl Perl-ben való átalakítása megköveteli az egyes hívott segédprogramok működésének megértését, vagy mindegyiküknek a Perl vállára történő áthelyezését, ami semmit sem ad. Ezért a legjobb dolog, amit tehetünk, Nézd meg a shell parancsfájlt, állapítsd meg, mit csinálsz, és kezdd el mindent a semmiből, de már Perlben. Persze, gyorsan átírhatod - a forráskód legfontosabb részeit a rendszer () hívásokba helyezve, vagy a visszaírásokba zárva. Lehetséges, hogy néhány műveletet lecserélhet Perl parancsokkal: például cserélje le a rendszert (rm / piros) az unlinkkel (fred) vagy a héjhurokkal azonos perlhurokkal. A legtöbb esetben azonban láthatjuk, hogy ez némiképp emlékeztet a Cobolban írt program C-re (a karakterek számának majdnem ugyanolyan csökkenésével, és ennek következtében a program szövegének olvashatatlanságának fokozása). Lásd az A függeléket a válaszhoz. macska / etc / passwd I awk -F: '(print $ 1, $ 6 (' | miközben olvasd el a felhasználó otthonát newsrc = "http://hardline.ru/download/977/.nevsrc" ha [-r $ newsrc] majd ha grep -s "" comp. \ .lang \ .perl \ .announce: "$ newsrc akkor
1. Konvertálja a következő parancsfájlt egy Perl programba:Kapcsolódó cikkek