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 2025

Video: Technology Stacks - Computer Science for Business Leaders 2016 2025
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

Sosiale medier optimalisering verktøy - dummies

Sosiale medier optimalisering verktøy - dummies

Holde nåværende i den stadig skiftende verden av sosiale medier er et viktig aspekt av din sosiale medier optimalisering strategi. Myspace var det største sosiale nettstedet fra 2005 til 2008, og overgikk selv Google på ett tidspunkt. Men bare seks år senere fant Myspace seg på 392. plass på listen over de mest besøkte nettstedene i ...

Social Media Optimization: Gjør innhold som reiser godt - dummier

Social Media Optimization: Gjør innhold som reiser godt - dummier

En innholdsdistribusjonsstrategi for sosiale medier er ingenting uten passende innhold. Når det gjelder å komme opp med riktig innhold, trenger det ikke å være vanskelig. Selv om du alltid kan lage innhold spesielt for bruk på bestemte kanaler, er det uansett at du allerede har egnet innhold som du kan bruke med litt ekstra innsats. Når ...

Sosiale medier optimalisering: nå ut gjennom sosiale nyheter nettverk - dummies

Sosiale medier optimalisering: nå ut gjennom sosiale nyheter nettverk - dummies

Ikke glem de sosiale nyhetsnettene når du utvikler din sosiale media optimaliseringsstrategi. For flere år siden var sosiale nyheter en betydelig trend i innholdet på nettet. Denne trenden har ikke spilt ut så mange som trodde det ville. I stedet for at det er flere høyprofilerte nyheter-orienterte nettsteder, er det ... Facebook. Nesten en tredjedel av amerikanske voksne får ...

Redaktørens valg

Sett et Device Password for å streame med Spotify's Hi-Fi Partners - dummies

Sett et Device Password for å streame med Spotify's Hi-Fi Partners - dummies

Deg kan lytte til all musikk i rik, skinnende hi-fi-streaming fra skyen - takket være Spotifys partnerskap med en rekke førsteklasses lydsystemprodusenter. Du trenger ikke nødvendigvis å ha Spotify åpen på datamaskinen eller mobilenheten for å bruke disse Internett-klare systemene, og du kan streame til flere rom i ...

Del Spotify Tracks på iPhone - dummies

Del Spotify Tracks på iPhone - dummies

Når du ser informasjon om en sang som spilles via Spotify Mobile, trykk Del spor. Deretter ser du en skjerm som gir deg flere delingsalternativer: Kopier til pasteboard: Kopierer sporets unike Spotify-URL. Du kan deretter lime inn denne nettadressen i et webskjema eller en annen tekstboks, som du ville med annen tekst ...

Spotify og Facebook Connection Issues - dummies

Spotify og Facebook Connection Issues - dummies

Spotify på Facebook er klassifisert som en tredjeparts plattform app, som er et mini-program som plugger inn i Facebook. I innstillingene dine på Facebook-kontoen kan du faktisk blokkere bestemte apper fra å vises eller slå av plattformapps helt. Facebook har utallige apps, og det er mulig at du (ved et uhell, selvsagt) blokkerte Spotify en gang til. ...

Redaktørens valg

Hvem er St. James the Less? - dummies

Hvem er St. James the Less? - dummies

Ifølge den katolske kirken ble St. James kåret til den første biskopen i Jerusalem, og på grunn av sin plassering ble han en mester for jødiske konvertitter til kristendommen. (første århundre a. d. -a. d. 62) Patron: fullers, farmasøyter Feastedag: 3. mai James er forfatteren av det nye testamente-epistelet i hans navn. Han heter "...

Hvem er St. Mark? - dummies

Hvem er St. Mark? - dummies

St. Mark, en av de opprinnelige 72 disiplene i katolicismen, ble aldri utnevnt til en apostel. Han var Kristi yngste tilhenger; da Jesus ble arrestert før sin korsfestelse, fløy Mark fra tempelvaktene så fort at han forlot sin tunika bak. Palestina eller Libya (første århundre a. D. -a. D. 68) Patron: Venezia, løve trenere ...