nntp2http.com
Posting
Suche
Optionen
Hilfe & Kontakt

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
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