Portál AbcLinuxu, 13. května 2025 03:47

Dotaz: Jak ulozit vystup do nejakeho txt (v Perl)

NbS avatar 15.11.2005 09:11 NbS | skóre: 26 | blog: Linux jako Linux ... vsude je neco jako /etc | Prague
Jak ulozit vystup do nejakeho txt (v Perl)
Přečteno: 258×
Odpovědět | Admin
Zdravim

Nevi nekdo jak by sel ulozit vysledek (ktery se vypisuje klasicky do shelu) treba do /user/vysledek.txt ?

ted budu rikat blbost (ale beztak to neslo :) pres print "> /user/vysledek.txt"; to pochopitelne neslo :(

diky
Pan Bily byli bily strop, aby byl bily ... (Opravdu si myslite, ze je to spravne) ?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Pravák Bob avatar 15.11.2005 09:21 Pravák Bob | skóre: 13 | Praha
Rozbalit Rozbalit vše Re: Jak ulozit vystup do nejakeho txt (v Perl)
Odpovědět | | Sbalit | Link | Blokovat | Admin
Hmm, zkusil bych klasické přesměrování výstupu typu: "perl program.pl > vysledek.txt"
knowledge brings fear
15.11.2005 09:27 zabza | skóre: 52 | blog: Nad_sklenkou_cerveneho
Rozbalit Rozbalit vše Re: Jak ulozit vystup do nejakeho txt (v Perl)
Odpovědět | | Sbalit | Link | Blokovat | Admin
open F, '>/tmp/vysledek.txt';
print F "Hello world!\n";
close F;
NbS avatar 15.11.2005 09:41 NbS | skóre: 26 | blog: Linux jako Linux ... vsude je neco jako /etc | Prague
Rozbalit Rozbalit vše Re: Jak ulozit vystup do nejakeho txt (v Perl)
pr
#!/usr/bin/perl
$par="20";
for ($i=1;$i<255;$i++) {
if (qx[program -parametry $par.$i ] ) {
}
}

a jak to tam nejak sikovne zakomponovat (to je to oc tu bezi)

open F, '>/home/user/Desktop/vysledek.txt';
print F "";
close F;

protoze program vypisuje stale jen do shellu :(

diky
Pan Bily byli bily strop, aby byl bily ... (Opravdu si myslite, ze je to spravne) ?
15.11.2005 10:15 zabza | skóre: 52 | blog: Nad_sklenkou_cerveneho
Rozbalit Rozbalit vše Re: Jak ulozit vystup do nejakeho txt (v Perl)
if ($result = qx[program -parametry $par.$i ] ) {
  print FILE $result;
}
Jestli program vypisuje něco na STDERR, tak to musíte/chcete přeměrovat...
15.11.2005 10:24 alex
Rozbalit Rozbalit vše Re: Jak ulozit vystup do nejakeho txt (v Perl)
Existuje jeste moznost presmerovat veskery vystup ze STDOUT do nejakeho souboru stejne jako v shelle. K tomu muzete pouzit "select". To znamena, ze uplne na zacatku vaseho skriptu napisete
open F, ">vysledek.txt";
select F;
a pak uplne na konci napisete
close F;
Nic vic menit nemusite (pokud program nevypisuje na STDERR, jak tady bylo spravne poznamenano).
NbS avatar 15.11.2005 11:05 NbS | skóre: 26 | blog: Linux jako Linux ... vsude je neco jako /etc | Prague
Rozbalit Rozbalit vše Re: Jak ulozit vystup do nejakeho txt (v Perl)
Ne tak bohuzel :(

kdyz zapisu $program -parametry -parametry > vystup.txt tak to ze shellu krasne funguje (jako predtim)

nicmene kdyz to same chci i po tomhle tak nic (je to sice prkotina ale chtel jsem si usnadnit praci nasledne mam jeste jeden script kterej to vyhodnocuje a posila vysledky mi - jak rikam kdyz to spustim ze shellu tak v poho...)
#!/usr/bin/perl
open F, "> vysledek.txt";
select F;

$inet="192.168.0";

for ($i=1;$i<68;$i++) {
if (qx[ping -c1 $inet.$i] ) {

close F;

}
}
diky
Pan Bily byli bily strop, aby byl bily ... (Opravdu si myslite, ze je to spravne) ?
15.11.2005 11:48 alex
Rozbalit Rozbalit vše Re: Jak ulozit vystup do nejakeho txt (v Perl)
Zapvrve, psal jsem abyste dal "close F;" uplne na konec skriptu, ale vy jste to umistil doprostred smycky for.

Zadruhe, nechapu presne ceho chcete dosahnout. Pingnout spoustu stroju a vysledky presmerovat do souboru vystup.txt? Pak to muzete udelat takhle:
#!/usr/bin/perl

open F, ">vystup.txt";
select F;

$inet="192.168.0";

foreach $host ( 1 .. 67 ) {
    print qx[ping -c1 $inet.$host]
}

close F;
Pokud vas ale zajima jenom vysledek, t.j. jestli stroj odpovida nebo ne, pak muzete upravit smycku takto:
foreach $host ( 1 .. 67 ) {
    qx[ping -c $inet.$host];
    if ( $? ) {
        print "$inet.$host is dead\n"
    } else {
        print "$inet.$host is alive\n"
    }
}

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.