Hem Personliga finanser Tuning till tio korta, användbara Perl-program - dummies

Tuning till tio korta, användbara Perl-program - dummies

Innehållsförteckning:

Video: How I held my breath for 17 minutes | David Blaine 2024

Video: How I held my breath for 17 minutes | David Blaine 2024
Anonim

Vissa tror att korta program inte är bra för mycket, men det är inte så med Perl. Bara ett par rader av Perl-kod kan gå långt. Den här artikeln innehåller några praktiska teeny, små Perl-program.

Samla unika rader

Om din textfil har många rader som är dubbletter och du bara vill se de unika raderna kan du samla dem in i en array (i det här fallet kallas den @Unique) med följande program:

öppen (IN, "somefile. Txt"); @ Unique = ();

medan () {med mindre ($ i {$ _} ++) {push (@Unique, $ _)}}

Tricket här är att $ i {$ _} ++ returnerar 0 första gången du skapar ett nyckelvärdespar med $ _ som nyckeln, och en del icke-nollvärde efter det.

Avlägsna flera tomma linjer

Vissa textfiler har flera tomma linjer i följd, vilket gör att de är svåra att läsa, särskilt på små skärmar. Följande program skriver ut en textfil, komprimerar alla instanser av två eller flera tomma linjer i en enda tomlinje.

Obs: En tom linje kan ha blanksteg i den, till exempel mellanslag och flikar, men inga tecken som kan visas.

öppen (IN, "somefile. Txt"); $ PrevBlank = 0;

medan () {

om (/ S / eller! $ PrevBlank) {skriv ut $ _}

$ PrevBlank = / ^ s * $ /;

}

Om förklaringen i det föregående exemplet är sant om det inte finns blanka tecken på linjen eller om den föregående raden inte var blank. $ PrevBlank-uppgiften berättar om den aktuella raden är tom, vilket betyder att den har noll eller fler blankstegstegn och inget annat.

Skriva ut linjer från en fil i ordnad ordning

Det är lätt att glömma hur användbar Perl sortsfunktion är. Följande program läser hela filen i en array, sorterar arrayen och skriver resultatet. Kort och söt och ganska effektiv att starta:

öppen (IN, "somefile. Txt");

Skriv sortera ();

Skriva ut en rad rader från en fil

Har du någonsin velat läsa några få rader från en fil, och inte hela grejen? Följande program skriver ut en rad rader. Du kör programmet med två argument: det intervall du vill ha och filnamnet. Till exempel, om du heter ditt program "showline" och du vill se linjer 10 till 20 i partfältet. txt-fil, använder du den här kommandoraden:

showline 10-20 somefile. txt

Följande program skriver ut en rad rader:

öppen (IN, $ ARGV [1]) eller dö "Kunde inte läsa $ File. n”;

($ Start, $ Stop) = delad (/ - /, $ ARGV [0]);

för ($ i = 1; $ i <= $ stop; $ i + = 1)

{$ Line =; om ($ i> = $ Start) {skriv ut $ Line}}

Visar bara filerna i en katalog

Ibland kanske du ignorerar underkatalogerna i en katalog och fokuserar bara på filerna.Du kan använda följande -f filtest för att lista alla filer i en katalog:

foreach $ f () {if (-f $ f) {print "$ fn"}}

Lista en katalog efter storlek

För att sortera en kataloglista med något annat än filnamnen måste ditt program behålla en lista över poster som består av namn och andra objekt i listan. Hashes är bra att använda för den här typen av listor som har poster med en nyckel (filnamnet) och ett värde (den andra kataloginformationen). Följande program skapar en hash som listar storleken på varje fil i katalogen och sorterar sedan objekten för utmatning. (Du kan enkelt ändra detta program för att sortera efter datum istället för efter storlek.)

foreach $ f () {$ i {$ f} = -s $ f};

foreach $ k (sort {$ i {$ b} <= & gt $ i {$ a}} nycklar% i)

{printf "% 8d% sn", $ i {$ k}, $ k }

Sortera kataloger i tillägg

Sortera efter en del av ett filnamn är en något svårare process än sortering efter filstorlek eller vid det datum då filen ändrades. Följande program bryter filnamnet i två och sorterar av den andra delen. Om du kör Perl på ett UNIX- eller Macintosh-system fungerar det här programmet endast förutsägbart om filnamnen inte har någon period eller en period:

foreach $ FullName () {

($ Namn, $ Ext) = delad /. /, $ FullName, 2);

tryck (@Temp, "$ Extt $ FullName");

}

foreach $ Val (sortera (@ Temp)) {

($ Ext, $ FullName) = delat (/ t /, $ Val);

skriv ut "$ FullNamen";

}

Skapa en enkel kalkylator

Har du någonsin behövt en enkel att använda kalkylator för att släcka lite snabb och smutsig matte? Följande program använder Perls eval-funktion för att skriva ut svaren på alla ekvationer du anger. För att avsluta programmet, ange en tom linje. Här är det programmet för att skapa din egen kalkylator:

medan () {

$ i = $ _; chomp ($ i); såvida inte ($ i) {sista}

$ o = eval ($ i); skriv ut "Answer = $ on";

}

När du kör programmet kan du ange något som följande:

(2 ** 8) + (3 ** 8))

och du får detta resultat: > Svar = 6817

Randomizing a list

I Perl är generering av slumptal lätt, men det är inte så enkelt att randomisera ordningen för en array. Ändå kan du använda splitsfunktionen för att dra ett slumpmässigt element från en array och placera sedan elementet i en annan matris. Följande program randomiserar listan @MyList:

min @TempList = ();

medan (@MyList)

{push (@TempList, splice (@MyList, rand (@MyList), 1))}

@MyList = @TempList;

Tricket här är att rand (@MyList) väljer ett tal mellan 0 och antalet element i @MyList, och splice ändrar detta slumptal till ett heltal.

Generera slumpmässiga mnemoniska lösenord

Att försöka övertyga datoranvändare att komma med lösenord som inte enkelt gissas är ett av de mest utmanande jobben för en systemadministratör. Människor verkar alltid insistera på att använda sina födelsedatum eller husdjurs namn för lösenord - brott mot säkerhet blir då barns lek.

Följande program genererar slumpmässiga lösenord. Istället för en jumble av svåra att komma ihåg bokstäver, är lösenordet dock lite mnemonic eftersom de förekommer i par av konsonanter och vokaler som är uttalbara.Genom att stränga ihop en del goofy-sounding stavelser, kan du skapa lättanvända nonsensfraser.

Varje stavelse av lösenordet kan representera någon av 100 nummer; därför är ett enkelt lösenord med fyra stavelser, till exempel

votahubo, ett av 100 miljoner (100 till fjärde kraften) möjliga lösenord som programmet genererar. Att ha en systemadministratör tilldela dessa lösenord ger mer säkerhet än att låta användarna välja sina egna, lätt gissade lösenord: Skriv ut "Ange ett frönummer:"; $ s =;

srand ($ s ^ tid);

@ c = split (/ * /, "bcdfghjklmnprstvwxyz");

@ v = split (/ * /, "aeiou");

för ($ i = 1; $ i <= 4; $ i + = 1)

{skriv ut $ c [int (rand (20))], $ v [int }

De två första raderna i detta program initierar fröet för slumptalsnumren, och de följande två raderna skapar listor som innehåller de 20 konsonanterna (minus

q ) och 5 vokaler i alfabetet. För loop sätter du bara ut de fyra stavelserna.

Tuning till tio korta, användbara Perl-program - dummies

Redaktörens val

Hur man tar bort eller minimerar webbdelar i SharePoint 2013 - dummies

Hur man tar bort eller minimerar webbdelar i SharePoint 2013 - dummies

Du har två alternativ för att ta bort en webbdel från din SharePoint-sida - stängning eller radering. Att stänga en webbdel lämnar webbdelen på sidan så att du kan aktivera den igen för framtida användning. Att ta bort webbdelen tar bort webbdelen från din sida (men tar inte bort den från SharePoint). Till ...

För att ladda ner Apps från SharePoint Store - dummies

För att ladda ner Apps från SharePoint Store - dummies

Förutom de appar som följer med SharePoint, Du kan också lägga till appar från tredje part. Dessa tredjepartsprogram visas i SharePoint-butiken. Om du använder SharePoint Online har du tillgång till hela butiken. Om du använder SharePoint On-Premise kan dina lokala IT-administratörer ha låst ned de appar som ...

Hur man visar visningar via webbdelar i SharePoint 2013 - dummies

Hur man visar visningar via webbdelar i SharePoint 2013 - dummies

Du vill visa din SharePoint appdata med annan text och webbdelar på flera platser, till exempel hemsidor för hemsida, webbsidor eller publiceringssidor. I dessa situationer vill du inte att dina användare ska interagera med själva appen med alla redigeringsalternativ. Du vill bara att de ska se flera ...

Redaktörens val

Vad är Kik? - dummies

Vad är Kik? - dummies

Grundades 2009, är Kik en gratis snabbmeddelandeprogram utvecklad från Kik Interactive. Kik är tillgängligt på Android, Windows Phone och iOS-enheter. Applikationen är modellerad efter BlackBerry Messenger. Kik använder den befintliga smarttelefonens dataplan eller Wi-Fi för att skicka och ta emot meddelanden, videoklipp, foton, mobila webbsidor, skisser och annat innehåll. ...

ÖVersätt Twitter Slang och Jargon - dummies

ÖVersätt Twitter Slang och Jargon - dummies

Diskussioner om och om Twitter är fulla med alla slags förkortningar och jargong som kan förvirra nya Twitter-användare. Vad talar folk om (och tweeting) om? Följande ordlista definierar några av de förvirrande förkortningarna och Twitter-lingo du kan komma över. AFAIK: Så vitt jag vet. bot: Ett konto som drivs av en ...

Vad är Letgo? - dummies

Vad är Letgo? - dummies

Letgo är en mobil klassificerad applikation som tillåter användare att köpa från och sälja till andra lokalt. Du kan använda Letgo till fyndbutik eller slutligen släppa på saker som samlar damm runt ditt hus. I likhet med andra classifieds-applikationer som Wallapop eller Craigslist kommer säljare att skicka ett objekt och vänta på en köpare ...

Redaktörens val

Vanliga kodningsfel - dummies

Vanliga kodningsfel - dummies

Koden fungerar inte? Här är några vanliga misstag som kan gå upp till och med även den mest erfarna kodaren. Om din kod inte kommer att köras, försök att springa ned den här checklistan för att se om du har några av dessa fel: Har inte en slutlig HTML-tagg efter varje öppnande HTML-tagg . Saknade parentes i ...

Grundläggande kodningsordförråd - dummies

Grundläggande kodningsordförråd - dummies

Kodning har ett omfattande vokabulär som för lekmän kan verka som ogenomtränglig technobabble. Oavsett om du läser kodningsrelaterad artikel online eller pratar med en utvecklare på jobbet hörs det kanske ord som du inte har hört förut eller som har en annan mening i en kodande kontext. Här är några vanliga ordförrådsord att veta: Allmänt ...