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 myperlprog $ perl myperlprog somefile A lámpa szám 15 $

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

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.
1. Konvertálja a következő parancsfájlt egy Perl programba:

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

Kapcsolódó cikkek