Czytanie danych z potoku z innego programu
Von: ..:: sjf ::.. (somebody@unknown.org.invalid) [Profil]
Datum: 20.07.2009 10:43
Message-ID: <h41amo$ere$1@news.onet.pl>
Newsgroup: pl.comp.lang.perl
Datum: 20.07.2009 10:43
Message-ID: <h41amo$ere$1@news.onet.pl>
Newsgroup: pl.comp.lang.perl
Witam,
Mam skrypt, który przetwarza dane z pliku/plików,
których nazwy są
podane jako argumenty do programu. Chciałbym, by możliwe było
również
czytanie danych przez potok. Zrobiłem to tak, że gdy nie podano nazwy
pliku, wrzucam do tablicy @ARGV "-". Ma to tę wadę, że
jeżeli nie podano
nazwy pliku oraz program faktycznie nie dostaje nic z potoku to oczekuje
na wprowadzenie danych z klawiatury.
Odpowiedni fragment skryptu:
push @ARGV,"-" if !scalar @ARGV;
open FILE,$ARGV[0] or die "** Blad odczytu pliku \"$ARGV[0]\": $!\n";
foreach my $line (<FILE>){
# przetwarzanie pliku
}
close FILE;
Uruchomienie skryptu z podaniem nazwy pliku:
skrypt.pl plik_do_przetworzenia
działa prawidłowo.
Uruchomienie z czytaniem danych z potoku:
jakis_program inny_plik_wejsciowy | skrypt.pl
też działa prawidłowo.
Ale uruchomienie bez podania nazwy pliku:
skrypt.pl
powinno wyrzucić komunikat o braku pliku danych. Niestety skrypt czeka
na dane z klawiatury.
W jaki sposób sprawdzić czy skrypt został uruchomiony w trybie
czytania
z otwartego potoku?
Wiem w jaki sposób obsługiwać czytanie z potoku, gdy
wywołuję jakiś
program z mojego skryptu, ale rzecz w tym, że dane mogą
pochodzić z
różnych programów generujących wyniki w
ustalonym formacie.
--
Szczepan J. Fijał :: sjf @ 50°07'N 18°58'E
xmpp:sjf@jabster.pl | tlen:sjf | gg:2604451 | skype:s.fijal?call
"2 nie jest równe 3 - nawet dla dużych wartości
2."
[ Auf dieses Posting antworten ]Antworten
- Stachu 'Dozzie' K. (20.07.2009 10:51)
- ,, (20.07.2009 11:51)
