Strona 1 z 1
wget i skryp perl, jak przekazać plik bezpośrednio do tablicy bez zapisu na dysku
: 02 stycznia 2012, 11:06
autor: sznajdi
Witam.
Jak plik ściągany wgetem w skrypcie perla (np. poprzez wywołanie system) przekazać bezpośrednio do zmiennej lub tablicy w perlu.
Chciałbym pominąć zapisywanie pliku na dysku i późniejsze odczytywanie z dysku aby plik przenieść do tablicy.
Wiem, że można korzystać z LWP lub innych parserów ale pliki, które ściągam to nie zawsze html.
Będę wdzięczny za nakierowanie na jakąś funkcję, podanie koncepcji, może jakiś pomysł na rozwiązanie tego problemu?
Resztę sam znajdę z pomocą Google i napiszę.
Pozdrawiam.
: 02 stycznia 2012, 11:24
autor: mariaczi
Jaki efekt chcesz uzyskać?
Nie możesz perlem 'czytać' bezpośrednio ze strumienia? Zapamiętasz sobie wtedy wynik z odczytu strumienia gdzie będziesz potrzebował.
Pobierając wget-em poprzez funkcję system możesz odczytać jedynie rezultat z wykonania polecenia (w tym wypadku wget).
: 02 stycznia 2012, 11:37
autor: sznajdi
Chcę stronę www np.
bezpośrednio z serwera http odczytać (pobrać)
z pomocą[/b skryptu perla, następnie przenieść (przekazać) do tablicy aby później to co ściągnę dalej obrobić w skrypcie.
Wpadłem na pomysł,że można coś takiego zrobić za pomocą programu wget ale przy dużej ilość plików/katalogów robi się problem, bo dysk muli i zaczyna całość działać wolniej. Zastanawiam się nad ramdyskiem, pewnie da się to jakoś szybciej, efektywniej, lepiej zrobić niż zapisywać pliki na dysku wgetem.
A jak czytać bezpośrednio ze strumienia? Czy stronę www można (i czym, ak) przekazać jako strumień?
To co ściągnie wget mam przekazywać do skryptu perla za pomocą:
: 02 stycznia 2012, 12:02
autor: mariaczi
: 02 stycznia 2012, 12:54
autor: sznajdi
Dziękuję!
Ale:
[INDENT]- zanim napisałem post sam szukałem z pomocą Google,
- w pierwszym moim akapicie jest napisane, że nie chcę lwp,
- parsować htmla będę sam po swojemu i nie to jest problemem
.[/INDENT]
Chodzi mi o to jak przekazać ściągniętą stronę www bezpośrednio do skryptu w perlu?
Na chwilę obecną robię to tak, że:
- Ściągam stronę za pomocą wget.
- Zapisaną stronę na dysku wczytuję do tablicy w skrypcie perlowym.
- Parsuję tablicę po swojemu.
Problem jest w tym, że strona jest zapisywana na dysku, a efektywniej byłoby ją przekazać bezpośrednio do skryptu perla aby pominąć zapisywanie na dysku.
Podpowiedziałeś mi coś o strumieniach i sprawdzę to popołudniu.
Może ktoś jeszcze ma jakieś pomysły? Będę wdzięczny za wszystkie podpowiedzi, sugestie, pomysły.
: 02 stycznia 2012, 13:07
autor: mariaczi
Czyli potrzebujesz po prostu odczytać stronę www bezpośrednio w skrypcie perla

Można np. tak:
Kod: Zaznacz cały
# perl use strict;
# use LWP::Simple;
use LWP::UserAgent;
my $ua = new LWP::UserAgent;
$ua->timeout(120);
my $url='http://yahoo.com/';
my $request = new HTTP::Request('GET', $url);
my $response = $ua->request($request);
my $content = $response->content();
print $content;
Sposobów na odczyt strony bez jej pobierania jest zapewne kilkanaście.
Popatrz również do dokumentacji za opisem funkcji
get.