Hjem Personlig finansiering Tuning til ti korte, nyttige Perl-programmer - dummies

Tuning til ti korte, nyttige Perl-programmer - dummies

Innholdsfortegnelse:

Video: Technology Stacks - Computer Science for Business Leaders 2016 2024

Video: Technology Stacks - Computer Science for Business Leaders 2016 2024
Anonim

Noen tror at korte programmer ikke er bra for veldig mye, men det er ikke så med Perl. Bare et par linjer med Perl-kode kan gå langt. Denne artikkelen viser noen praktiske teeny, små Perl programmer.

Samle unike linjer

Hvis tekstfilen din har mange linjer som er duplikater, og du bare vil se de unike linjene, kan du samle dem inn i en matrise (i dette tilfellet kalles den @Unique) med følgende program:

åpen (IN, "somefile. Txt"); @ Unique = ();

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

Trikset her er at $ i {$ _} ++ returnerer 0 første gang du lager et nøkkelverdi-par med $ _ som nøkkel, og noen ikke-nullverdier etter det.

Bli kvitt flere tomme linjer

Noen tekstfiler har flere, sammenhengende tomme linjer, noe som gjør dem vanskelige å lese, spesielt på små skjermer. Følgende program skriver ut en tekstfil, komprimerer alle forekomster av to eller flere tomme linjer i en enkelt tom linje.

Merk: En tom linje kan ha hvite mellomrom i den, for eksempel mellomrom og faner, men ingen displaybare tegn.

åpen (IN, "somefile. Txt"); $ PrevBlank = 0;

mens () {

hvis (/ S / eller! $ PrevBlank) {print $ _}

$ PrevBlank = / ^ s * $ /;

}

If-setningen i det foregående eksemplet er sant hvis det er ikke-blanke tegn på linjen, eller hvis den forrige linjen ikke var blank. $ PrevBlank-oppdraget forteller om den nåværende linjen er tom, noe som betyr at den har null eller flere hvite mellomrom og ingenting annet.

Skrive ut linjer fra en fil i rekkefølge

Det er lett å glemme hvor nyttig Perls sorteringsfunksjon er. Følgende program leser hele filen inn i en matrise, sorterer matrisen og skriver resultatet. Kort og søt, og ganske effektiv å starte:

åpen (IN, "somefile. Txt");

skrive sortering ();

Skrive ut en rekke linjer fra en fil

Har du noen gang ønsket å lese bare noen få linjer fra en fil, og ikke hele greia? Følgende program skriver ut bare en rekke linjer. Du kjører programmet med to argumenter: rekkevidden du vil ha og filnavnet. For eksempel, hvis du heter programmet "showline", og du vil se linjer 10 til 20 av elementet. txt fil, bruker du denne kommandolinjen:

showline 10-20 somefile. txt

Følgende program skriver ut en rekke linjer:

åpen (IN, $ ARGV [1]) eller dør "Kunne ikke lese $ File. n”;

($ Start, $ Stopp) = delt (/ - /, $ ARGV [0]);

for ($ i = 1; $ i <= $ stop; $ i + = 1)

{$ Line =; hvis ($ i> = $ Start) {print $ Line}}

Viser bare filene i en katalog

Noen ganger kan du ignorere underkatalogene i en katalog og bare fokusere på filene.Du kan bruke følgende filtest for å liste alle filene i en katalog:

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

Oppgi en katalog etter størrelse

For å sortere en katalogoppføring av noe annet enn filnavnet, må programmet holde en liste over poster som består av navnene og andre elementer i oppføringen. Hashes er flott å bruke for denne typen liste som har poster med en nøkkel (filnavnet) og en verdi (den andre kataloginformasjonen). Følgende program oppretter en hash som viser størrelsen på hver fil i katalogen, og sorterer deretter elementene for utdata. (Du kan enkelt endre dette programmet for å sortere etter dato i stedet for etter størrelse.)

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

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

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

Sortering av kataloger etter utvidelse

Sortering av en del av filnavn er en litt vanskeligere prosess enn sortering etter filstørrelse eller ved datoen filen ble endret. Følgende program bryter filnavnet til to og sorterer av den andre delen. Hvis du kjører Perl på et UNIX- eller Macintosh-system, virker dette programmet kun forutsigbart hvis filnavnene ikke har noen periode eller en periode:

foreach $ FullName () {

($ Navn, $ Ext) = delt /. /, $ FullName, 2);

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

}

foreach $ Val (sort (@Temp)) {

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

skriv ut "$ FullNamen";

}

Opprette en enkel kalkulator

Har du noen gang hatt en brukervennlig kalkulator for å slå av en rask og skitten matte? Følgende program bruker Perls eval-funksjon for å skrive ut svarene til en ligning du skriver inn. For å avslutte programmet, skriv inn en tom linje. Her er det programmet for å lage din egen kalkulator:

mens () {

$ i = $ _; chomp ($ i); med mindre ($ i) {siste}

$ o = eval ($ i); skriv ut "Svar = $ på";

}

Når du kjører programmet, kan du skrive inn noe som følger:

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

og du får dette resultatet: > Svar = 6817

Randomizing en liste

I Perl er generering av tilfeldige tall lett, men det er ikke så enkelt å randomisere rekkefølgen på en matrise. Likevel kan du bruke splitsingsfunksjonen til å trekke et tilfeldig element fra en matrise og deretter plassere elementet i en annen matrise. Følgende program randomiserer listen @MyList:

min @TempList = ();

mens (@MyList)

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

@MyList = @TempList;

Trikset her er at rand (@MyList) velger et tall mellom 0 og antall elementer i @MyList, og splice endrer dette tilfeldige tallet til et heltall.

Generere tilfeldige mnemoniske passord

Forsøk på å overbevise datamaskinbrukere om å komme opp med passord som ikke lett gjettes, er en av de mest utfordrende jobbene for en systemadministrator. Folk ser alltid ut til å insistere på å bruke fødselsdatoer eller kjæledyrs navn for passord - brudd på sikkerhet blir da barns lek.

Følgende program genererer tilfeldige passord. Istedenfor en jumble av vanskelig å huske bokstaver, er passordene imidlertid litt mnemonic fordi de vises i par konsonanter og vokaler som er uttalt.Ved å stryke sammen noen gule lydende stavelser, kan du generere enkle å huske nonsensfraser.

Hver stavelse av passordet kan representere en av 100 tall; Derfor er et enkelt fire stavelsespassord, som

votahubo, en av 100 millioner (100 til fjerde kraft) mulige passord som programmet genererer. Å ha en systemadministrator tilordne disse passordene gir mer sikkerhet enn å la brukerne velge sine egne, lett gjette passord: print "Skriv inn et frø nummer:"; $ s =;

srand ($ s ^ tid);

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

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

for ($ i = 1; $ i <= 4; $ i + = 1)

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

De to første linjene i dette programmet initialiserer frøet for tilfeldige tall, og de neste to linjene lager lister som inneholder de 20 konsonanter (minus

q ) og 5 vokaler i alfabetet. For-sløyfen skriver bare de fire stavelsene.

Tuning til ti korte, nyttige Perl-programmer - dummies

Redaktørens valg

Vanlige medikamenteffekter for legeassistenteksamen - dummies

Vanlige medikamenteffekter for legeassistenteksamen - dummies

Bli kjent med vanlige bivirkninger for legeassistenteksamen (PANCE). Den gjennomsnittlige personen over 60 år tar omtrent ni reseptbelagte medisiner og ser minst fire forskjellige helsepersonell. Potensialet for noen til å oppleve bivirkningene av disse medisinene er enorm, og det er potensialet for signifikante legemiddelinteraksjoner. ...

Epidemiologiske studier dekket av legeassistenteksamen - dummies

Epidemiologiske studier dekket av legeassistenteksamen - dummies

For legeassistenteksamen (PANCE) du bør være oppmerksom på forskjellene mellom typer epidemiologiske studier. Det første trinnet er å gjenkjenne om studiet er en retrospektiv studie eller en prospektiv studie: Retrospektiv: En retrospektiv studie betyr at du ser på fortiden for å finne ut hva som skjedde. For eksempel, en ...

Forhold som påvirker pleura dekket på legeassistenteksamen - dummies

Forhold som påvirker pleura dekket på legeassistenteksamen - dummies

Du kan se Spørsmål om legeassistenteksamen om forhold som påvirker pleura. Du må vurdere evaluering og behandling av pleural effusions, pneumothorax og pleurisy. Væske rundt lungene: Pleural effusjon Normalt er pleura et tomt rom; en pleural effusjon er ganske enkelt væske som opptar den plassen. Pleural ...

Redaktørens valg

Slik setter du automatiske varsler på LinkedIn - dummies

Slik setter du automatiske varsler på LinkedIn - dummies

Sikkert, du kan gjøre alt fotverket ved å gå til LinkedIn hjemmesiden og ser deg rundt for å se hvilke meldinger eller endringer som har skjedd. Den sanne kraften til å holde kontakten, har imidlertid LinkedIn, kontakter deg automatisk med den informasjonen du trenger for å holde deg informert. Klikk på Administrer-koblingen ved siden av Personvern og innstillinger ...

Tips for å administrere dine LinkedIn Post-interaksjoner - dummies

Tips for å administrere dine LinkedIn Post-interaksjoner - dummies

Når du klikker Publiser på LinkedIn, kan du tenke at jobb er ferdig, men det er bare begynt. Etter hvert som flere og flere leser innlegget ditt, kan de samhandle med innlegget og med deg som forfatter. Her er noen ting å huske på etter at du har publisert et innlegg: Overvåk statistikken. Når du ...

Forstå LinkedIn Pulse - dummies

Forstå LinkedIn Pulse - dummies

Har du sjekket ut LinkedIn Pulse ennå? Tenk deg om du leser en avis som bare viste deg artikler som har betydning for deg. (For det hele, for mange av dere, tenk på de dagene du kanskje har lest en avis.) Tilpassede nyheter er mulige, og på LinkedIn kalles det LinkedIn Pulse. Alt du trenger å gjøre for å ...

Redaktørens valg

Hva Dragon NaturallySpeaking kan gjøre for deg - dummies

Hva Dragon NaturallySpeaking kan gjøre for deg - dummies

Noe om å diktere til en datamaskin vekker alle slags urealistiske forventninger hos mennesker. Hvis du forventer at du skal servere deg frokost på sengen, har du lykke til. Denne artikkelen ble ikke skrevet ved å si "Computer, skriv en bok om NaturallySpeaking. "Forfatteren måtte diktere det ord for ord, akkurat som hun ville hatt ...

Når Start ikke starter i NaturallySpeaking - dummies

Når Start ikke starter i NaturallySpeaking - dummies

Når du gir kommandoen "Start" til Dragon NaturallySpeaking, du sier "Start America Online" eller "Start Microsoft Works" eller "Start Quicken", og programmet skal åpnes. Men hva hvis det ikke gjør det? Hva er greia? Start-kommandoen starter et program som er installert på maskinen din, og har enten et snarveisikon på ...

Når NaturallySpeaking Menykommandoer ikke fungerer - dummies

Når NaturallySpeaking Menykommandoer ikke fungerer - dummies

Når du gir en kommando til NaturallySpeaking, for eksempel "Klikk" og ingenting skjer, det sannsynlige problemet er at menyen Bruk menyer som er kompatible med skjermlesere, ikke er merket av. For å sjekke det: Velg Verktøy → Valg i vinduet NaturallySpeaking. Det er ikke noe poeng å fortelle deg hvordan du får tilgang til dette med stemmen, for det er akkurat ...