Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: Perl odmítá otevřít ovladač open s proměnnou  (Přečteno 1756 krát)

Ebola

  • Návštěvník
  • Příspěvků: 85
Perl odmítá otevřít ovladač open s proměnnou
« kdy: 12 Srpna 2012, 20:58:31 »
Ahoj, už jsem z toho úplně zoufalý. Když chci číst ze souboru, tak mi celý cyklus zhavaruje a program se chová jako kdyby měl v tom cyklu <STDIN>, prostě jen entruju prázdné řádky a cyklus se odmítá ukončit. open(DATA, "nejakysoubor.txt"); mi ale funguje bez roblémů, v proměnné je to, co tam má být, takže absolutně nechápu, kde je problém. Dokázal by mi někdo poradit? Při rozebírání jsem to postupně oklestil až na současný krátký cyklus, který prostě nefunguje.

autovysledky je pole o 5 prvcích...

for $nula (0 .. (scalar @autovysledky)){
  $prubezny = $autovysledky[$nula];
  print $prubezny;
  chomp $prubezny;
  open(DATA, $prubezny); #zde je problém, bez tohoto řádku to bez problému skončí
  my $pocetodstavcu; my $integ=0; my $zdroj; my $aaa = 0; my $aac; my $aab;
  my ($fullup, $fulldown); my $tmpmaily; my $nahradit;
  @src = <DATA>;
  close DATA;
  open(EDITOVAN, ">tmp/cached.dat");close EDITOVAN;
  $pocetodstavcu = scalar @src;
  $pocetodstavcu--;
  chomp @src;
  $integ = 0;
}
« Poslední změna: 12 Srpna 2012, 21:06:17 od Ebola »

Martin Kiklhorn

  • Člen občanského sdružení Ubuntu ČR a placené komunitní podpory
  • Administrátor fóra
  • Závislák
  • ******
  • Příspěvků: 4807
  • グーグル!ご存知ですか?
    • HEJ
Re:Perl odmítá otevřít ovladač open s proměnnou
« Odpověď #1 kdy: 15 Srpna 2012, 03:24:04 »
scalar @autovysledky vrací předpokládám počet prvků, tedy 5

Tipnul bych že 0 .. 5 znamená 6 průchodů

takže
for $nula (0 .. (scalar @autovysledky -1)){
by mohlo pomoci

a možná bych ještě testoval úspěšné otevření souboru
open(DATA, $prubezny) or die !$;

Ale berte to s velkou rezervou, perl jsem viděl akorát z rychlíku.

Jsou ve vašem dotazu OPRAVDU VŠECHNY vám dostupné informace o problému?
Linux user since 2007-10-11, Registered #456007
Virtual
| Distribuce
~/slozka znamená /home/"vase jmeno"/slozka
6521 69DE 0F34 FCBC FB1D  DE76 360E 52B2 F71A B8E8

Ebola

  • Návštěvník
  • Příspěvků: 85
Re:Perl odmítá otevřít ovladač open s proměnnou
« Odpověď #2 kdy: 17 Srpna 2012, 11:27:01 »
Nakonec jsem to po dvou dnech vyřešil, podmínku v cyklu for jsem zjednodušil, skalární délku pole jsem hodil do proměnné ještě před cyklem. Očividně tedy perl není asi ideálním jazykem, neboť jsem se setkal také s problémem kdy například podmínka ($a >= $b) při trojciferných číslech udělal jenom deset cyklů (bral pouze první cifru z proměnné). Vyřešil jsem to nahrazením > < == != za lt gt eq ne, pak vše fungovalo bez jakékoli další změny. Přitom s ohledem na to, že pracuju ve striktním módu, by takového "nedorozumnění" nejspíše vznikat nemělo.

Jinak problém jsem teda nakonec vyřešil jak jsem psal v úvodu. Děkuju za odpověď.  ;)

MacHala

  • Stálý člen
  • **
  • Příspěvků: 1104
  • Big Bro iz watching joo!
    • ZlejT
Re:Perl odmítá otevřít ovladač open s proměnnou
« Odpověď #3 kdy: 17 Srpna 2012, 11:52:12 »
striktni mod nic moc neznamena, ten te upozorni napr na nedeklarovane promene, vicemene relativni drobnosti vzhledem k tomu, ze u Perlu se ti muze po klavesnici projit kocka a je tu slusna sance, ze to bude neco znamenat...
Prislusnik ligy, za kreativni pouzivani interpunkcnich znamenek, carek, predevsim.
=======================================
Tweetuju jako http://twitter.com/zl8

ntz_reloaded

  • Lokaj
  • Závislák
  • ***
  • Příspěvků: 3735
  • skill :: ur home erly
Re:Perl odmítá otevřít ovladač open s proměnnou
« Odpověď #4 kdy: 17 Srpna 2012, 12:24:40 »
vsiml jsem si toho az ted a je to naprosto prisernej kod .. ukaz nam to prosim cele i s kontextem ..

zdravim, ntz
tikejte mi, taky Vam tikam ...
song of the day - openSUSE, openindiana, DuckDuckGo
The noise ain't noise anymore, who's to blame, WHO'S TO BLAME ??

 

Provoz zaštiťuje spolek OpenAlt.