Veelgestelde vragen over Perl voor beginners
Veelgestelde vragen verzameld tijdens de conferentie RU.CGI.PERL.CHAINIK Wat is CGI? Dit gemeenschappelijke interface gateways die een programma verbinden dat wordt uitgevoerd onder controle van een webserver en een client in de vorm van een HTTP-browser. Met andere woorden, dit is een tool waarmee je on-the-fly HTML-documenten kunt genereren, afhankelijk van de voorwaarden en wensen van de programmeur. Zoals elke client-servertool bestaat een CGI-programma uit twee delen: één dat op de client draait, in een browseromgeving, en het andere dat op de server draait, in een webserveromgeving. Het clientgedeelte is geschreven in HTML (mogelijk met behulp van verschillende aanvullende tools die de mogelijkheden ervan uitbreiden), servergedeelte kan worden geschreven in elke programmeertaal die uitvoerbare programma's kan maken op het platform waarop de webserver is geïnstalleerd. We zullen Perl voor deze doeleinden gebruiken omdat het handig is voor het verwerken van tekstreeksen - en HTML-document is maar tekst. haal het gewoon op ftp://cdl.bmstu.ru/soft/cgi. Installeer het echter niet in de map die het voorstelt voor installatie, maar in c:\apache . De webserver kan zelfs werken als deze standaard in de root is geïnstalleerd, maar bij het configureren ervan zullen er enkele discrepanties zijn met de hier voorgestelde optie. Als u ongewenste complicaties wilt voorkomen, wijzigt u het standaardpad. Start de webserver (er verschijnt een leeg zwart venster op het scherm - dit is een normaal resultaat van een succesvolle start; sluit dit venster niet met geweld - de webserver heeft een speciaal pictogram gemaakt waarmee u kunt voltooien). Open het vanuit een browser via de URL http://localhost en zorg ervoor dat de demo-webpagina, die zich in de htdocs-directory bevindt, succesvol wordt gestart. Als de webserver niet opstart, lees dan de foutmelding die wordt weergegeven. Meestal kan de webserver niet starten omdat de naam niet is opgegeven. Open het hoofdconfiguratiebestand van de webserver (httpd.conf) om te bewerken en verwijder de opmerking uit de overgedragen servernaam, waarbij u de server een willekeurige naam geeft, bijvoorbeeld localhost. Nu is het zinvol om te proberen uw eerste CGI-programma uit te voeren. Nadat het pad naar de tolk is opgegeven, moet u een http-header van de server instellen die het type gegevens aangeeft dat moet worden verzonden: Houd er rekening mee dat het http-headersveld eindigt met een dubbele regelinvoer. De headers zelf, als er meerdere zijn, worden van elkaar gescheiden door een enkele regelinvoer. De derde regel van ons programma bevat de benodigde apparatuur voor het maken van HTML-documenten: ";
De derde regel van ons programma bevat de benodigde apparatuur voor het maken van HTML-documenten: ";
De derde regel van ons programma bevat de benodigde apparatuur voor het maken van HTML-documenten: afdrukken "
VLINK=\"#551A8B\">\n"; Houd er rekening mee dat bij gebruik binnen een afdrukopdracht dubbele aanhalingstekens moeten worden doorgestreept - anders zal de tolk de aanhalingstekens als het einde van de opdracht beschouwen, en wat erna komt als een niet-beëindigde regel, en zal hij reageren met een runtime-fout.
Nu moet je een uitvoerregel schrijven en het HTML-document sluiten. druk "Hallo" af; afdrukken "";
Ons hele eerste programma ziet er dus als volgt uit:
De derde regel van ons programma bevat de benodigde apparatuur voor het maken van HTML-documenten: ";
De derde regel van ons programma bevat de benodigde apparatuur voor het maken van HTML-documenten: ";
De derde regel van ons programma bevat de benodigde apparatuur voor het maken van HTML-documenten: #!perl
print "Inhoudstype: tekst/html\n\n";
De derde regel van ons programma bevat de benodigde apparatuur voor het maken van HTML-documenten:
";
\N"; druk "Hallo" af; Controleer of het correct werkt door het programma lokaal uit te voeren. Om dit te doen, belt u opdrachtregel u moet het programma uitvoeren als een client-servertoepassing. Om dit te doen, moet u de programma-uitvoeringsrechten geven (voor besturingssystemen waar dit relevant is) en deze in een directory plaatsen waarin de webserver de programma's herkent als CGI-applicaties. Standaard is dit de cgi-bin directory, waar ons programma geplaatst moet worden. Om het programma uit te voeren, moet u de URL in het locatievenster typen: http://localhost/cgi-bin/bestandsnaam Hoe gegevens overbrengen tussen de client en de server? We hebben al gekeken hoe gegevens van de server naar de client kunnen worden overgedragen. De volgende stap is het overbrengen van gegevens van de client naar de server en het creëren van een client, rekening houdend met de informatie die naar de server wordt overgedragen. Er zijn verschillende METHODEN waarmee u informatie naar de server kunt overbrengen; De meest voorkomende zijn de GET-methode, die de gegevens in de URL doorgeeft, en de POST-methode, die de gegevens in de hoofdtekst van het verzoek doorgeeft. Het nadeel van de eerste is de beperkte hoeveelheid verzonden informatie (tot 127 bytes), het nadeel van de tweede is de moeilijkheid bij het vormen van een verzoek. Om een verzoek te genereren met behulp van de GET-methode is het in feite voldoende om een vraagteken achter de aanroep-URL te schrijven en de paren “naam=waarde” op te sommen via het ampersand: http://localhost/cgi-bin/test2. cgi?v1=vasya&v2 =petya enzovoort. Nu moet u deze gegevens op de server krijgen, waarvoor u alleen de inhoud hoeft op te halen omgevingsvariabele Als u nu het script aanroept met behulp van de bovenstaande URL, zal de module zoeken naar de streamvariabele “v1” in de ontvangen gegevens, en nadat hij deze heeft gevonden, zal hij de waarde ervan toewijzen aan de scalaire waarde $v1, die nu gelijk zal zijn aan “vasja”. Om de juistheid van onze constructies te bevestigen, laten we een programma draaien dat deze gegevensoverdracht illustreert: afdrukken "";
gebruik CGI qw(param);
$v1=param("v1");
$v2=param("v2");
Ons hele eerste programma ziet er dus als volgt uit:
De derde regel van ons programma bevat de benodigde apparatuur voor het maken van HTML-documenten: ";
De derde regel van ons programma bevat de benodigde apparatuur voor het maken van HTML-documenten: ";
De derde regel van ons programma bevat de benodigde apparatuur voor het maken van HTML-documenten: ";
print "Hallo, $v1 , $v2 !!!";
De derde regel van ons programma bevat de benodigde apparatuur voor het maken van HTML-documenten:
";
De POST-methode verzendt gegevens in de hoofdtekst van het verzoek en deze moeten worden ontvangen via de invoerstroom van het programma (laat me u eraan herinneren dat wanneer het programma door de webserver wordt gestart, het naar het HTTP-protocol wordt verzonden). Formulieren worden gebruikt om gegevens via deze methode in HTML te verzenden. Als we bijvoorbeeld het onderstaande formulier op de client uitvoeren, krijgen we precies hetzelfde resultaat als in het vorige voorbeeld: <HTML>
De CGI-module die invoergegevens verwerkt, werkt zowel bij gebruik van de GET-methode als bij gebruik van de POST-methode precies hetzelfde. Veelgestelde vragen (deel twee) Er wordt materiaal gebruikt uit de "Perl FAQ gemaakt door SLY Golovanov, 2:5020/794.13". Waar kan ik Perl-documentatie verkrijgen?<имя_модуля>Ten eerste wordt, wanneer Perl is geïnstalleerd, de opdracht perldoc aan uw systeem toegevoegd. Voer het uit met de perldoc-switch (dwz perldoc perldoc) en het zal u vertellen hoe u het moet gebruiken. Voor modules doe je perldoc<имя_функции>Ten tweede zijn er enkele boeken over Perl in het Russisch: http://doc.marsu.ru/lang/perl/lama/ftp://mshp.minsk.by/pub/incoming/lama.rar ftp: //ftp. kursknet.ru/pub/books/lama_perl.zip ftp://molly.wbt.ru/incoming/lama.rar http://simplex.ru/news/ En in het Engels: http://solaris inorg.chem. msu.ru/cs-books/perl/perlbookshelf.zip http://lpcs.math.msu.ru/CD_Bookshelf/Perl_content.tar.bz2 ftp://twilight.telco.md/pub/books/perlbookshelf.zip http ://meltingpot.fortunecity.com/nj/80/cookbook.rar http://www.effectiveperl.com http://www.perlreference.com http://perlfect.com/articles/ http: //www. perlmonth.com/ http://www.stonehenge.com/merlyn/WebTechniques/ http://www.stonehenge.com/merlyn/UnixReview/ http://www.stonehenge.com/merlyn/LinuxMag/ http:// www.plover.com/~mjd/perl/#tpj http://home.od.ua/watman/perl/ http://spider.softclub.net/books/web/ http://athena.vvsu.ru :85/docs/unix/ http://athena.vvsu.ru:85/docs/tcpip/ http://athena.vvsu.ru:85/docs/www/ %%%%%%% %%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%% % En hier kunt u kant-en-klare scripts voor verschillende doeleinden verkrijgen: www.script.ru www.codemanual.com %%%%%%%% %%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%% Wat te doen als uw script voortdurend afsluitcode nummer 500 produceert (intern serverfout)? 1. Probeer het programma lokaal uit te voeren door op de opdrachtregel te typen: perl-bestandsnaam (waar bestandsnaam is, weet je wat). Houd er rekening mee dat als u in een Unix-systeem werkt, waar naast de vijfde parel die u hebt geïnstalleerd, er waarschijnlijk ook een ingebouwde vierde parel is, en het is geen feit dat deze zich later op de paden bevindt, het is logisch typen
Zorg ervoor dat een dergelijke regel aanwezig is in uw programma voordat u een teken naar de HTTP-stream uitvoert. Simpel gezegd moet dit afdrukcommando vóór elk ander afdrukcommando worden uitgevoerd. 3. Als dit geen resultaat oplevert, controleer dan of de Perl die u aanroept correct is. Op veel UNIX-systemen bevindt de vierde Perl zich langs het pad:/usr/lokaal/perl en de vijfde onderweg:/usr/local/bin/perl Zorg er voor het geval dat de vijfde Perl op het systeem is geïnstalleerd. 4. Als dit niet helpt, probeer dan te onthouden of het bestand met uw bewerkingsscript is verwerkt in teksteditors van Windows. Dit is uiteraard alleen relevant als u het script op een Unix-systeem uitvoert. Feit is dat Windows en Unix verschillende regeleindtekens hebben. Enige ingebouwde Windows-editor werkt op standaard Windows-regeluiteinden, maar Unix kan zo'n bestand niet uitvoeren. Om dit effect tegen te gaan, wordt aanbevolen om bestanden alleen op Unix-systemen te maken en te bewerken, of ze alleen op Windows te maken en te bewerken met de ingebouwde editor van de FAR-manager, waarmee u het type bestand kunt selecteren dat u wilt maken. door op shift-F2 te drukken. Standaard gebruikt deze editor de regeleinden die al in het bestand voorkomen (dat wil zeggen dat een bestand dat in UNIX is gemaakt, kan worden opgeslagen "zoals het is", zonder na te denken over het type ervan).
Als uw script al is gemaakt in
Windows standaard )
{
, en je wilt het op Unix draaien, gebruik dan bijvoorbeeld dit programma:
$v1 = "\x0d";
}
open A, "f1";
terwijl ($lijn=
$lijn =~ s/$v1//g;
$itog .= $regel;
Dit programma wordt geopend voor het lezen van een bestand met de naam f1, dat zich op de startplaats bevindt, en leest van daaruit alle regels om de beurt, waarbij het einde van elk ervan wordt vervangen. Na het lezen opent het programma hetzelfde bestand als een nieuw bestand om te schrijven en schrijft het resultaat ernaar. 5. Controleer als laatste kans of het script lees- en uitvoerrechten heeft van de gebruiker van wie de webserver draait. Nee, je moet het nog controleren.
Als dit u niet helpt, schrijf dan naar de conferentie. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % %%%%%%%%%%%%%%%%%%%%%%%%%% Hoe kan ik alle webserveromgevingsvariabelen bekijken die momenteel actief zijn? voor (toetsen %ENV) ( print "$_ = $(ENV($_))\n" ) %%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Wat zijn cookies en waarvoor dienen ze?
Sleutels zijn een manier om een bestand op de schijf van de client te openen. Omdat zo'n bestand een potentieel virus is, moet deze procedure op browserniveau goed worden beveiligd. De sleutel kan worden geïnstalleerd voor de duur van de actieve browser of voor een bepaalde periode. Voor het eerste type sleutels hoeft u niet het tijdstip op te geven waarop de sleutel wordt verwijderd; u moet dit tijdstip opgeven, en in een formaat dat toegankelijk is voor de browser. Als de browser de datums in de kalender niet kan instellen waarop de sleutel moet worden verwijderd, zal hij deze de eerste keer dat u het programma afsluit, wissen. Om het proces van het verzamelen van een datum te automatiseren, wordt een procedure gebruikt die de datum een maand vooruit zet vanaf het huidige moment:
sub get_cookie_date(
mijn(@day, @mon, $i, $count, $sec,$min,$hours,$mday,$mon,$year, $wday, $yday,
$isdst, $resultaat);
($sec,$min,$hours,$mday,$mon,$year, $wday, $yday, $isdst)=gmtime(time+2592000);
@day=("Zondag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrijdag",
"Zaterdag");
@mon=("jan", "februari", "mrt", "april", "mei", "juni", "juli", "aug", "sep", "oktober",
"november", "december");< 10){$year = "0$year";}
}
if($jaar >= 100)(
$jaar = $jaar - 100;
als($jaar
}
$result=$day[$wday].", ".$mday."-".$mon[$mon].."-".$year." ".$hours.".$min.".$sec." GMT";
retourneer $resultaat; Vergeet niet een scalair pad naar uw programma in te voeren vanaf de hoofdmap van het overeenkomstige servergebied. Het is niet nodig om de programmanaam op te geven; deze wordt afzonderlijk verzonden. Bijvoorbeeld:
$pad = "/cgi-bin";
Nu kun je de sleutel altijd installeren door het volgende stukje code in je programma uit te voeren:
Om de sleutel te lezen, is er ook een speciale procedure voorzien: sub get_cookie(
mijn (%cook, @temp, $i, $count, $key, $value);
(@temp)=split(/;/, $ENV("HTTP_COOKIE"));
$count=@temp;
voor ($i=0; $i<$count; $i++){
$temp[$i]=~s/ //;
($sleutel, $waarde)=split(/=/, $temp[$i]);
$koken($sleutel)=$waarde;
}
retourneer %koken;
}
Hierna kunt u de sleutelwaarde bijvoorbeeld als volgt verkrijgen: if ($ENV(HTTP_COOKIE))($cookies=1; %cookies=get_cookie();)
anders ($cookies=0;)
als ($cookies==1)
{
$inloggen=$cookies("inloggen");
$pass=$cookies("wachtwoord");
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % %%%%%%%%%%%%%%%%%%%%%%%%%% Hoe kopieer ik een bestand van het netwerk?
De eenvoudigste manier is om de libwww-module op uw systeem te installeren, waarmee u dit kunt doen. Hier is een voorbeeld van het gebruik ervan:
#!/usr/local/bin/perl
gebruik LWP::UserAgent;
gebruik CGI qw(header);
mijn $URL = "http://www.rbc.ru/kpc/topnews/news_inc.html";
mijn $res = LWP::UserAgent->new->request(new HTTP::Request GET => $URL);
binmode(STDOUT);
print $res->inhoud; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%% %%%%%%%%%%% Hoe kopieer ik een bestand naar de server?
gebruik CGI qw(param);
Om dit te doen, moet je de Multipart-codering van de post-methode gebruiken; hiermee kun je zelfs binaire bestanden naar de server overbrengen, en hun grootte is niet beperkt. Helaas ondersteunen niet alle browsers deze codering. Netscape heeft het sinds versie 2, MSIE sinds versie 3.02. Hier is een voorbeeld van het gebruik van deze methode:
#!/usr/local/bin/perl
$mode=param("modus");
$bestand=param("bestand");
# map waar het ontvangen bestand wordt geschreven.
{
Ons hele eerste programma ziet er dus als volgt uit:
$fup = "/huge/httpd/htdocs/ufo/up";
if ($mode eq "uploaden")
@naam= split(/\\/, $bestand);
@naam= omgekeerd(@naam);
($bestand1) = @naam;
$file_new="$fup/"."$bestand1";
open A, "+>$file_new";
binmodus A;
{
binmode $bestand;
}
open A, "f1";
De derde regel van ons programma bevat de benodigde apparatuur voor het maken van HTML-documenten: ";
De derde regel van ons programma bevat de benodigde apparatuur voor het maken van HTML-documenten:
terwijl ($bytesread = lezen($bestand, $buf, 1024))
";
De derde regel van ons programma bevat de benodigde apparatuur voor het maken van HTML-documenten: ";
De derde regel van ons programma bevat de benodigde apparatuur voor het maken van HTML-documenten:
";
De derde regel van ons programma bevat de benodigde apparatuur voor het maken van HTML-documenten:";
}
print A $buf;
{
Ons hele eerste programma ziet er dus als volgt uit:
De derde regel van ons programma bevat de benodigde apparatuur voor het maken van HTML-documenten: ";
De derde regel van ons programma bevat de benodigde apparatuur voor het maken van HTML-documenten: ";
De derde regel van ons programma bevat de benodigde apparatuur voor het maken van HTML-documenten:
print "Het bestand is succesvol overgebracht naar de server.
elsif ($mode eq "")
De derde regel van ons programma bevat de benodigde apparatuur voor het maken van HTML-documenten:
";
De derde regel van ons programma bevat de benodigde apparatuur voor het maken van HTML-documenten:";
}
naam=\"uploaden\">"; Bestand uploaden:
Veelgestelde vragen (deel drie) Een brief versturen (op een UNIX-systeem).
Om met e-mail op UNIX-systemen te werken, wordt traditioneel het programma Sendmail gebruikt. U kunt er rechtstreeks toegang toe krijgen, of u kunt de mailopdracht gebruiken. In ieder geval moet u eerst de adressen voorbereiden door het "@"-symbool daarin te vervangen door "\@" - anders kan het programma niet worden uitgevoerd. waarbij $mails een adres of een reeks adressen is, gescheiden door spaties. Brieven worden traditioneel verzonden in koi-8-codering, waarin onze tekst moet worden vertaald. Dit kan worden gedaan door de hoofdtekst van de letter, bijvoorbeeld, in de scalaire $as4 te schrijven en vervolgens de volgende bewerking daarop uit te voeren (om te converteren van 1251-codering naar koi-8-codering):
$as4 =~
tr/ABVGDEZHZIYKLMNOPRSTUFHTSCHSHSHSHYYYYYAabvgdezhzijklmnoprstufhtsshshshjyeyeyoyey/bvchzdetsy
klmnoprtufhzhigyuyeyashshaasBVCHZDETSYKLMNOPRTUFHZHIGYUYEYASCHASi?/;
Open MAIL, "|mail -s \"Onderwerp\" $mails";
# De scalaire $mails vermeldt alle adressen gescheiden door spaties
print MAIL "$as4"; # dit is de hoofdtekst van de brief sluit MAIL; Met het programma Sendmail kunt u als volgt een brief versturen:
open(MAIL, "|/usr/lib/sendmail -f $from_addr $mails");
print MAIL "Onderwerp: onderwerp_tekst\n";
print MAIL "inhoudstype: tekst/html; charset=koi8-r\n\n";<$to_addr>print MAIL "Aan: $user
\n"; # Op welk adres moet worden gereageerd.
print MAIL "$as4";
sluit MAIL; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%% %%%%%%%%%%% Hoe kopieer ik een bestand naar de server?
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%% %%%%%%%%%%% Hoe lees ik een geaccepteerde brief?
De eenvoudigste manier is om de e-mailbibliotheek te gebruiken.
gebruik Mail::POP3Client;<= $pop->$pop = new Mail::POP3Client("login", "wachtwoord", "mail.server.ru");
voor ($i = 1; $i
Graaf; $i++) (
$bbb = $pop->Body($i);
$aaa = $pop->Hoofd($i);
foreach ($pop->Head($i)) (/^(From|Subject): / en print $_, "\n";)
# $pop->Verwijderen($i); #zo verwijderen ze een gelezen brief
}
druk "$aaa\n" af; druk "$bbb\n" af;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%% %%%%%%%%%% LWP-veelgestelde vragen door Paul Kulchenko ( [e-mailadres beveiligd]
), bijgewerkt op 04/03/2000 Dit is een beschrijving van een LWP-module (ook wel LibWWW genoemd) die veel zeer nuttige functies bevat. ================================================= === =================== 1.1. Hoe krijg ik een tekstbestand (http, ftp)? 1.2. Hoe kan ik een jpeg/gif/bmp-bestand verkrijgen en retourneren? 1.3. Hoe toegang krijgen tot een met een wachtwoord beveiligd bestand? 1.4. Hoe REFERER en andere HTTP-headerparameters instellen? 1.5. Hoe krijg ik een gespecificeerd deel van het bestand (eerste MAXSIZE bytes)? 1.6. Hoe cookies verkrijgen en instellen? 1.7. Hoe proxyservers opgeven? 1.8. Hoe controleer ik op omleidingen? 1.9. Hoe parameters voor de POST-methode maken? ================================================= === =================== 1.1. Hoe krijg ik een tekstbestand (http, ftp)? Een bestand ontvangen via http of ftp gebruik LWP::UserAgent;";
mijn $URL = "http://www.rbc.ru/kpc/topnews/news_inc.html";
Mijn $URL = "
================================================= === =================== 1.2. Hoe kan ik een jpeg/gif/bmp-bestand verkrijgen en retourneren? Hoe je een foto krijgt. [e-mailadres beveiligd]
gebruik CGI qw(header -no_debug);
$URL = "
http://a100.g.akamaitech.net/7/100/70/0001/www.fool.com/art/new/butts/go99
.
gif";
mijn $res = LWP::UserAgent->new->request(new HTTP::Request GET => $URL);
binmode(STDOUT);
print $res->is_success ? (header("afbeelding/gif"), $res->inhoud)
: (header("text/html"), $res->status_line);
================================================= === =================== 1.3. Hoe toegang krijgen tot een met een wachtwoord beveiligd bestand? Hoe u een wachtwoord invoert. BEGIN (
pakketRequestAgent;
#!/usr/local/bin/perl
@ISA = qw(LWP::UserAgent);
Sub nieuw ( LWP::UserAgent::new(@_); )
sub get_basic_credentials (retourneer "gebruiker", "wachtwoord" )
}
gebruik CGI qw(header -no_debug);
Mijn $res = RequestAgent->new->request(new HTTP::Request GET => $URL);
print header, $res->is_success ? $res->content: $res->status_line;
================================================= === =================== 1.4. Hoe REFERER en andere HTTP-headerparameters instellen? Hoe sessie-omgevingsvariabelen in te stellen. #!/usr/local/bin/perl
gebruik HTTP::Headers;
gebruik CGI qw(header -no_debug);
), bijgewerkt op 04/03/2000 Dit is een beschrijving van een LWP-module (ook wel LibWWW genoemd) die veel zeer nuttige functies bevat. ================================================= === =================== 1.1. Hoe krijg ik een tekstbestand (http, ftp)? 1.2. Hoe kan ik een jpeg/gif/bmp-bestand verkrijgen en retourneren? 1.3. Hoe toegang krijgen tot een met een wachtwoord beveiligd bestand? 1.4. Hoe REFERER en andere HTTP-headerparameters instellen? 1.5. Hoe krijg ik een gespecificeerd deel van het bestand (eerste MAXSIZE bytes)? 1.6. Hoe cookies verkrijgen en instellen? 1.7. Hoe proxyservers opgeven? 1.8. Hoe controleer ik op omleidingen? 1.9. Hoe parameters voor de POST-methode maken? ================================================= === =================== 1.1. Hoe krijg ik een tekstbestand (http, ftp)? Een bestand ontvangen via http of ftp http://localhost/cgi-bin/hello.cgi
";
mijn $res = LWP::UserAgent->new->request(
nieuwe HTTP::Verzoek(
GET => $URL,
nieuwe HTTP::Headers-verwijzer => "
http://www.yahoo.com
"),
);
print header, $res->is_success ? $res->content: $res->status_line;
================================================= === =================== 1.5. Hoe krijg ik een gespecificeerd deel van het bestand (eerste MAXSIZE bytes)? Hoe u een deel van een bestand kunt verkrijgen. #!/usr/local/bin/perl
gebruik CGI qw(header -no_debug);
), bijgewerkt op 04/03/2000 Dit is een beschrijving van een LWP-module (ook wel LibWWW genoemd) die veel zeer nuttige functies bevat. ================================================= === =================== 1.1. Hoe krijg ik een tekstbestand (http, ftp)? 1.2. Hoe kan ik een jpeg/gif/bmp-bestand verkrijgen en retourneren? 1.3. Hoe toegang krijgen tot een met een wachtwoord beveiligd bestand? 1.4. Hoe REFERER en andere HTTP-headerparameters instellen? 1.5. Hoe krijg ik een gespecificeerd deel van het bestand (eerste MAXSIZE bytes)? 1.6. Hoe cookies verkrijgen en instellen? 1.7. Hoe proxyservers opgeven? 1.8. Hoe controleer ik op omleidingen? 1.9. Hoe parameters voor de POST-methode maken? ================================================= === =================== 1.1. Hoe krijg ik een tekstbestand (http, ftp)? Een bestand ontvangen via http of ftp http://www.yahoo.com/
";
mijn $MAXSIZE = 1024;
Koptekst afdrukken;
mijn $res = LWP::UserAgent->new->request(
new HTTP::Request(GET => $URL), \&callback, $MAXSIZE);
Sub-callback ( my($data, $response, $protocol) = @_; print $data; die )
================================================= === =================== 1.6. Hoe cookies verkrijgen en instellen? Hoe de sleutel te installeren en te lezen. #!/usr/local/bin/perl
gebruik CGI qw(header -no_debug);
gebruik HTTP::Cookies;
Mijn $URL = "http://mail.yahoo.com/";
Mijn $ua = nieuwe LWP::UserAgent;
mijn $res = $ua->request(new HTTP::Request GET => $URL);
mijn $cookie_jar = nieuwe HTTP::Cookies;
$cookie_jar->extract_cookies($res);
Koptekst afdrukken;
if ($res->is_success) (
mijn $req = nieuwe HTTP::Request GET => $URL;
$cookie_jar->add_cookie_header($req);
$res = $ua->verzoek($req);
print $res->is_success ? $res->as_string: $res->status_line;
) anders (
print $res->status_line;
}
================================================= === =================== 1.7. Hoe proxyservers opgeven? Hoe te werken via een proxy. #!/usr/local/bin/perl
gebruik CGI qw(header -no_debug);
), bijgewerkt op 04/03/2000 Dit is een beschrijving van een LWP-module (ook wel LibWWW genoemd) die veel zeer nuttige functies bevat. ================================================= === =================== 1.1. Hoe krijg ik een tekstbestand (http, ftp)? 1.2. Hoe kan ik een jpeg/gif/bmp-bestand verkrijgen en retourneren? 1.3. Hoe toegang krijgen tot een met een wachtwoord beveiligd bestand? 1.4. Hoe REFERER en andere HTTP-headerparameters instellen? 1.5. Hoe krijg ik een gespecificeerd deel van het bestand (eerste MAXSIZE bytes)? 1.6. Hoe cookies verkrijgen en instellen? 1.7. Hoe proxyservers opgeven? 1.8. Hoe controleer ik op omleidingen? 1.9. Hoe parameters voor de POST-methode maken? ================================================= === =================== 1.1. Hoe krijg ik een tekstbestand (http, ftp)? Een bestand ontvangen via http of ftp http://www.yahoo.com/
";
mijn $ua = nieuwe LWP::UserAgent;
$ua->proxy(["http", "ftp"], " http://proxy.sn.no:8001/
");
$ua->proxy("gopher", "
http://proxy.sn.no:8001/
");
Mijn $res = $ua->request(new HTTP::Request GET => $URL);
print header, $res->is_success ? $res->content: $res->status_line;
================================================= === =================== 1.8. Hoe controleer ik op omleidingen? Hoe u een omleiding kunt maken #!/usr/local/bin/perl
gebruik CGI qw(header -no_debug);
), bijgewerkt op 04/03/2000 Dit is een beschrijving van een LWP-module (ook wel LibWWW genoemd) die veel zeer nuttige functies bevat. ================================================= === =================== 1.1. Hoe krijg ik een tekstbestand (http, ftp)? 1.2. Hoe kan ik een jpeg/gif/bmp-bestand verkrijgen en retourneren? 1.3. Hoe toegang krijgen tot een met een wachtwoord beveiligd bestand? 1.4. Hoe REFERER en andere HTTP-headerparameters instellen? 1.5. Hoe krijg ik een gespecificeerd deel van het bestand (eerste MAXSIZE bytes)? 1.6. Hoe cookies verkrijgen en instellen? 1.7. Hoe proxyservers opgeven? 1.8. Hoe controleer ik op omleidingen? 1.9. Hoe parameters voor de POST-methode maken? ================================================= === =================== 1.1. Hoe krijg ik een tekstbestand (http, ftp)? Een bestand ontvangen via http of ftp http://www.yahoo.com/
";
mijn $URL = "http://www.rbc.ru/kpc/topnews/news_inc.html";
Koptekst afdrukken;
print $res->request->url als $res->vorige->is_redirect;
================================================= === =================== 1.9. Hoe parameters voor de POST-methode maken? Hoe u een verzoek kunt verzenden via de POST-methode zonder een formulier te gebruiken. gebruik URI::URL;
gebruik HTTP::Verzoek;
#!/usr/local/bin/perl
gebruik CGI qw(header -no_debug);
), bijgewerkt op 04/03/2000 Dit is een beschrijving van een LWP-module (ook wel LibWWW genoemd) die veel zeer nuttige functies bevat. ================================================= === =================== 1.1. Hoe krijg ik een tekstbestand (http, ftp)? 1.2. Hoe kan ik een jpeg/gif/bmp-bestand verkrijgen en retourneren? 1.3. Hoe toegang krijgen tot een met een wachtwoord beveiligd bestand? 1.4. Hoe REFERER en andere HTTP-headerparameters instellen? 1.5. Hoe krijg ik een gespecificeerd deel van het bestand (eerste MAXSIZE bytes)? 1.6. Hoe cookies verkrijgen en instellen? 1.7. Hoe proxyservers opgeven? 1.8. Hoe controleer ik op omleidingen? 1.9. Hoe parameters voor de POST-methode maken? ================================================= === =================== 1.1. Hoe krijg ik een tekstbestand (http, ftp)? Een bestand ontvangen via http of ftp http://yahoo.com/?login=mijnlogin&password=mijnwachtwoord
";
mijn $uri = nieuwe URI $URL;
mijn $methode = "POST";
Mijn $verzoek;
if (uc($methode) eq "POST") (
mijn $query = $uri->query;
(mijn $url = $uri->as_string) =~ s/\?$query$//;
$request = nieuwe HTTP::Request ($method, $url);
$request->header("Content-Type" => "application/x-www-form-urlencoded");
$request->inhoud($query);
) anders (
$request = nieuwe HTTP::Request ($method, $uri->as_string);
};
# voeg Host-veld toe zoals vereist in HTTP/1.1
$request->header(Host => $uri->host_port) if $uri->scheme ne "file";
Mijn $res = LWP::UserAgent->new->request($request);
Koptekst afdrukken, $res->is_success ? $res->content: $res->status_line;
====================================================================