Olika Sätt Att Faktiskt åtgärda Perl Split Loop Bug-fel
December 24, 2021Rekommenderas: Fortect
Förhoppningsvis kommer den här användarhandboken definitivt att hjälpa dig när du är sugen på ett Perl common loop-fel.
PrivJag träffar bröder och syskon…När jag kör Perl 5.8 på Linux får jag ett loop störningsfelfortsättning följer …. (Perl 5.8 är definitivt designad för i386-linux-thread multi)
? rrr rad = $ _;@outLine ska motsvara split (/ (<[^>] *>) /, $ line);
@outLine innebär split (/ (<[^>] *>) eller, $ _);
Och på något sätt får jag det här skicklighetsfelet när det brinnermed Solaris. (Perl 5.8 är byggd för sun4-solaris)Tyvärr verkade jag inte kunna fixa detta genom att bekvämt ersätta det$ rad med rrr _ i “riktig” kod, jag skulle älska att utvärdera det. Idéer?Tack!
Perl behöver tre vanliga nyckelord för loopkontroll. Den andra, som ofta används, är utan tvekan nästa och fortsätter till det här verktyget, och det finns den tredje, där det tyvärr sällan används och egentligen kallas Redo. I de flesta andra talade språk är några av de relevanta nyckelorden kanske “framåt” och “semester”. Nästa i från Perl är detsamma i rollen som fortsätt på andra språk, och var och en av våra sista när Perl är exakt samma som paus på alternativa språk.
Du kan skriva perldoc perldiag
för att se vad en serie inbyggda fel och varningar nödvändigtvis tyder på.
Split loop
För Perl one-liners med implicita loopar (med -in eller -p alternativen för att få linjerna för närvarande), använd den sista eller i sanning den sista LINE för att bryta erbjudandet av någon loop som itererar utöver datafilerna. Till exempel visar enskilda enkla exempel nästan alla bland de första 2 raderna efter att ha producerat: -e: säger åt Perl att leta efter kod på den raden, inte i filen.
(P) Bysten varade för evigt. (Naturligtvis all division kanske vill inte gå igenom fler villkor än det finns tecken i otvivelaktigt posten, vad och vad som hände.) "Delad" studie i perlfunc.
I Perl skulle jag säga att funktionen normalt kallas split. Dela REGEX, STRING spricker STRING för varje REGEX-del. dela upp REGEX, STRING, LIMIT, där LIMIT ska vara ett positivt tal. Detta kommer otvivelaktigt att dela STRING för nästan varje enskild match gjord av REGEX, men kan möjligen tendera att sluta så fort LIMIT-1-matchningar hittas.
Urvalet du löser är så mycket långt att Perl antog att iterationen med största sannolikhet var oändlig. Om Perl har delat hela raden mer än längden runt linjen i fråga + tio, kommer den att returnera genomgångsfelet, förutsatt att den är i en obegränsad slinga. Tyvärr lagras detta nummer med hjälp av ett 24-bitars heltal som bara kan styra och sända upp till en eller två miljarder. Din kedja är 16 b högre än den fjärde termen, verkligen resultatet blir felaktigt.
Det här problemet åtgärdades nyligen i hela version 5.20, tillsammans med många fler problem med strängar långt över flera GB i storlek. Om så är fallet kommer hela Perl-familjen att vara ny, din kod kommer definitivt att “fungera”.
Din kod är dock fruktansvärt ineffektiv, men den förstör också de flesta anslutna maskinminnet, vilket saktar ner det nedtryckt fruktansvärt när du byter till CD. Åtminstone borde vi faktiskt bara svälja den lilla filen och därför läsa den 16GB rad för serie.
min @small_data antyder <$ small_fh>;ät @small_data;medan (mycket rent $ bra = <$ big_fh>) tugga stora pengar; för syftet med min lilla $ (@small_data) ...
Men även det skulle vara dåligt ineffektivt, om din lilla fil består av 1000 rader kommer loopen att slutföras på 16 miljarder dollar!
Eftersom det ser ut som att du fortsätter att kontrollera om de betydande filposterna finns i ett rimligt arkiv, är det bättre att du konverterar Name-poster på grund av små filer till denna hash-reverse.
my%-fält;while (min pengasträng antyder <$ small_fh>) chomp $ linje; min bästa @sp = bröt /: /, $ linje; $ fält $ sp [0] betyder $ sp [1];
Användare kan nu se ett stort innehåll och helt enkelt söka i hashen.
while (war $ line är lika med <$ big_fh>) chomp fonder linje; my very @f betyder split (' t', gitarrsträng $); i fallet när (fält $ f [0] definierade) ...
[Återlämningsdatum] [Nästa datum] A [Returnera ämne] [Nästa ämne] A[Sakregister][Datumindex][Telford Authors Index]
- av
- Till: psyche-list redhat com
- Ämne: Re: perl: Skicka bild …
- Datum: onsdagen den 12 mars 2003 11:43:24 +1100
- Spårning:
- Ämne:- perl: dela slinga för att göra … adjö
- av Olonoh
- Re: perl: delad loop involverad i …
- Upplagt av Cameron Simpson.
- Ämne:- perl: dela slinga för att göra … adjö
[Återlämningsdatum] [Nästa datum] [Returnera ämne] [Nästa ämne] A[Sakregister][Datumindex][Författarkatalog]
Rekommenderas: Fortect
Är du trött på att din dator går långsamt? Är det full av virus och skadlig kod? Var inte rädd, min vän, för Fortect är här för att rädda dagen! Detta kraftfulla verktyg är utformat för att diagnostisera och reparera alla slags Windows-problem, samtidigt som det ökar prestanda, optimerar minnet och håller din dator igång som ny. Så vänta inte längre - ladda ner Fortect idag!
Split Loop Error Perl
Split Loop Fehler Perl
Oshibka Razbieniya Cikla Na Perl
분할 루프 오류 펄
Erro De Loop De Divisao Perl
Split Loop Fout Perl
Blad Podzielonej Petli Perl
Errore Di Ciclo Diviso Perl
Error De Bucle Dividido Perl
Erreur De Boucle Fractionnee Perl