Labai dažnai kuriant programas tenka atlikti įvairius teksto pakeitimus. Tai ypač svarbu internetiniuose puslapiuose, bet svarbu ir visur kitur. Be to tai vieta kur Perl programos neturi sau lygių. Todėl ir nusprendžiau būtinai apie tai papasakoti.
įpraiškos (atrodo taip jos lietuviskai vadinasi)
yra tiesa tik tuo atvėju jei į $zodis įeina „as“. Didžiosios ir mažosios radės čia svarbu todėl nenustebkit kai:
Neišspauzdins nieko. Tik kai pajuodintą A pakeisit į a programa išspauzdins 1.
Jei norim tikrinti ar simbolių seka neįeina naudojam !~ vietoje =~.
Jums tikriausiai jau kyla klaisimas, o ką daryti kai aš noriu, kad tiktų ir as ir As. Tai tam naudojamos kitos sudėtingesnės įpraiškos kurių lentelę čia pateiksiu:
Laužtiniai skliaustai naudojama kai gali tikti bet kuris iš viduje skliaustu pateiktų simbolių.
Vertikalus brūkšnys | reiškia arba. Paprasti skliaustai naudojami grupuojant teiginius.
Ir dar….
Jums gali vėl kilti klaisimas, o ką man daryti jei dirbsiu su vienu iš šių simbolių tarkim su ?. Čia gelbėja ignoravimo brūkšnys \. Jei parašysite \? tai bus laikoma tiesiog paprastu klaistuku ir jo ieškoma, o ne 0 ar 1 kartą pasikartojančiu prieš tai paskutiniu simboliu.
Tai nėra išmokstama skaitant. Tai galima išmokti tik darant daug kartų. Tai ką as parašiau čia tai tik trumpa įžanga į šią temą. Norėdami išmokti daugiau skaitykite knygą:
Mastering regular expressions: Powerful Techniques for Perl and Other Tools
$_
Pakalbėsim apie $_. Tai „standartinis kintamasis“. Perl jų turi daug, bet šis dažniausiai sutinkamas. Jei norite, kad jūsų rašyto kodo nieks nesuprastų ir tai juos erzintų būtinai visur kur tik įmanoma naudokite jį.
Net Paskalio asui čia gali perdegt mąstytuvas mėginant suprasti kaip tai gali veikti. Na, o viekia viskas paprastai. Jei po if į skliaustus mes nededam loginių veiksmų tokių kaip == tai Perl juos ideda pats ir negana to pradžioje naudoja $_. Čia jis mūsų nieko nerašymą suprato kaip „$_ =~ „. Kam to reik? Taip mažiau rašyt, be to įpratus tai atrodo paprasta ir akivaizdu, be bereikalingų rašinėjimų. Ko gero jokia programavimo kalba, neįmanoma parašyt trumpiau tai kas yra pastraipos viršuje su Perl.
Keitimas
Panaudokim vėl $_:
Na akivaizdu. Pataisiau su s/.https://games.lt/.https://games.lt/ tai, kad as buvo iš mažosios raidės. Keitime galima naudoti viską kas parašyta čia aukčiau.
Jei nemėgstant $_ tai keitimas daromas taip:
Keitimo nustatymai. jie įvedami taip:
Įvedžiau nustatyma g. Pasėkmes pasižiūrėkit patys.
Vertimas
Keičia kekvieną simbolį kitu:
a pakeis į e, b į d ir c į f.
Su kitoms kalbomis „Leet speak“ generuojanti programa gali užimti ištisus puslapius tik ne su Perl:
Viskas! Dabar su šios programos pagalba forumuose galite rašinėti kaip elitiniai hakeriai. Juokauju.
Realiai dažnai naudojami:
Ir panašus dalykai.
Split funkcija
Metas išmokti dar vieną funkciją.
Kaip iš masyvo daryti žodį jus žinote. Jei ne vadinasi nepakankamai atidžiai nagrinėjot senesnius mano tekstus ir reiktų peržiurėt juos dar. O dabar mas iš žodžio darysim masyvą:
Jei nenurodoma ką skaidyt, o tiesiog split(/:/) tai jum suskaidys $_.
Na jei tai išmokote tai jau viskas. Nedideles programas kurios dirba tik su tekstu, tekstinėmis bylomis ir tekstinėmis komandomis jūs jau kurti mokate.
6 Komentarai
ProzacR
Arba jei nepatinka toks uzd. ir labai norit kur zaidima jau tai laisvai galit kurt, jei tik ismokot ka rasiau:
Uzdavinys kurtas paskaliui bet su Perl tai tik lengviau. Be to rasti ka nors jums nesvarbu jum svarbu pats tik pvp, laivu musis. zaidimo lenta spauzdina print.
Zaidziama ivedus ejimus i
AI galit ir nekurt. Bet jei kursit kvaila AI tai jums labai pravers rand funkcija kuri generuoja atsitiktinius duomenis.
$x = int(rand(10));
tai cia $x reiksme kazkokia atsitiktine nuo 1 iki 9.
Elementarus DOSinio stiliaus zaidimas.
ProzacR
Oj vos nepamirsau uzd.:
Taigi turit laiko koda:
metai:menuo:diena:valanda:minutes:sekundes
(2008:07:08:14:59:30)
Ir jum ji reik paverst i grazia forma. I ka nors tokio:
2008 liepos 08. 2 valandos po pietu, 14 minučiu 30 sekundziu.
edgax
Klausimelis mazas. Rasiau koda dviems budais. Trumpesniu:
ir ilgesniu:
Kur padariau klaidele. Mat man viska pakeicia tik neparaso :)(speju kad pakeicia)
ProzacR
Cia yra nesazinga taip:
As noriu kad paleidus programa ir ivedus BEKOKI laiko koda gauciau grazu atsakyma.
Be to nesupratai apie $_. Jei tu nenaudoji $_ tai tau tokie dalykai kaip print; spausdina nieka.
„Ilgesniu“ isvis yra blogai.
Padesiu truputi su „trumpesniu“:
Sudejau visur $laikas, bet tycia palikau problema ta kad jei ivedi ka nors kita o ne 2008:08:21:14:25 tai gaunasi nieko gero. Galvok pats 😉
Cia reiks pasitelkti i pagalba ir split funkcija ir masyvus taip lengvai ir trumpai neisisuksit. 😛
edgax
galima ir su pirmom ziniom ta padaryti :). Irodymas:
Zinau, kad netiks, bet gal…. :). Cia is esmes, jei turi fantazija galima ir su pirmom ismoktom komandom daug ka pakurti :). Einu dar karta perskaityti ir pabandyti pakurti. Dar biski tobulinant zines, kur padaryta klaida, kad parase keleta eiluciu, o ne graziai 1-2eilutem?
ProzacR
Nu joa is esmes teisingas bet netiks. Be to yra trukumas kad tavo programos miletojui ir naudotojui gal nepatiktu spandinet enter tiek daug kartu.
Viskas ko as noriu kad praktiskai butu pritaikyta split, o jei dar sugalvotum kaip is 07 paverst i liepa ar pan. tai isvis super. 😀
O jei dar matyciau kaip moki ka nors praktiskai i tekstine byla isaugot tai jau tikrai ne veltuj rasau.
….ai tiek tos parasysiu dar viena dali vistie neturiu ka veikt. Bet sicia kaip daryt pasiziurek.