Perl FAQ para sa Mga Nagsisimula
Mga madalas itanong na nakolekta sa kumperensya RU.CGI.PERL.CHAINIK Ano ang CGI? Ito karaniwang interface mga gateway na nagkokonekta sa isang program na tumatakbo sa ilalim ng kontrol ng isang web server at isang kliyente sa anyo ng isang HTTP browser. Sa madaling salita, ito ay isang tool na nagbibigay-daan sa iyo upang bumuo ng mga HTML na dokumento sa mabilisang, depende sa mga kondisyon at kagustuhan ng programmer. Tulad ng anumang tool ng client-server, ang isang CGI program ay binubuo ng dalawang bahagi - isa na tumatakbo sa client, sa isang browser environment, at isa na tumatakbo sa server, sa isang web server environment. Ang bahagi ng kliyente ay nakasulat sa HTML (maaaring sa paggamit ng iba't ibang mga karagdagang tool na nagpapalawak ng mga kakayahan nito), bahagi ng server maaaring isulat sa anumang programming language na may kakayahang lumikha ng mga executable program sa platform kung saan naka-install ang web server. Gagamitin namin ang Perl para sa mga layuning ito dahil ito ay maginhawa para sa pagproseso ng mga string ng teksto - at HTML na dokumento ay text lang. kunin lang ito sa ftp://cdl.bmstu.ru/soft/cgi. I-install ito, gayunpaman, hindi sa direktoryo na iminumungkahi nito para sa pag-install, ngunit sa c:\apache . Ang web server ay maaaring gumana kahit na ito ay naka-install sa root bilang default, gayunpaman, kapag i-configure ito magkakaroon ng ilang mga pagkakaiba sa opsyon na iminungkahi dito - kung gusto mong maiwasan ang mga hindi gustong komplikasyon, baguhin ang default na landas. Ilunsad ang web server (isang walang laman na itim na window ang lilitaw sa screen - ito ay isang normal na resulta ng isang matagumpay na paglulunsad; huwag pilitin na isara ang window na ito - ang web server ay lumikha ng isang espesyal na icon para matapos mo). I-access ito mula sa isang browser sa pamamagitan ng URL http://localhost at tiyaking matagumpay na nailunsad ang demo web page, na matatagpuan sa direktoryo ng htdocs. Kung nabigong magsimula ang web server, basahin ang mensahe ng error na ipinapakita nito. Kadalasan, hindi makapagsimula ang web server dahil hindi tinukoy ang pangalan. Buksan ang pangunahing file ng pagsasaayos ng web server (httpd.conf) para sa pag-edit at alisin ang komento mula sa inilipat na Pangalan ng Server, na nagtatalaga sa server ng anumang pangalan - halimbawa localhost. Ngayon, makatuwiran na subukang patakbuhin ang iyong unang CGI program. Matapos matukoy ang landas patungo sa interpreter, kailangan mong magtakda ng http header ng server na nagsasaad ng uri ng data na ipapadala: Pakitandaan na ang field ng http header ay nagtatapos sa isang double line feed. Ang mga header mismo, kung marami sa kanila, ay pinaghihiwalay sa isa't isa ng isang feed ng linya. Ang ikatlong linya ng aming programa ay maglalaman ng mga kinakailangang kagamitan para sa paglikha ng mga HTML na dokumento: ";
Ang ikatlong linya ng aming programa ay maglalaman ng mga kinakailangang kagamitan para sa paglikha ng mga HTML na dokumento: ";
Ang ikatlong linya ng aming programa ay maglalaman ng mga kinakailangang kagamitan para sa paglikha ng mga HTML na dokumento: print"
VLINK=\"#551A8B\">\n"; Pakitandaan na kapag ginamit sa loob ng isang print command, dapat na i-cross out ang mga double quote - kung hindi, kukunin ng interpreter ang mga quote bilang dulo ng command, at kung ano ang susunod sa kanila bilang isang unterminated line, at tutugon nang may runtime error.
Ngayon ay kailangan mong magsulat ng isang linya ng output at isara ang html na dokumento. i-print ang "Hello"; i-print ang "";
Kaya ang aming buong unang programa ay magiging ganito:
Ang ikatlong linya ng aming programa ay maglalaman ng mga kinakailangang kagamitan para sa paglikha ng mga HTML na dokumento: ";
Ang ikatlong linya ng aming programa ay maglalaman ng mga kinakailangang kagamitan para sa paglikha ng mga HTML na dokumento: ";
Ang ikatlong linya ng aming programa ay maglalaman ng mga kinakailangang kagamitan para sa paglikha ng mga HTML na dokumento: #!perl
i-print ang "Content-type: text/html\n\n";
Ang ikatlong linya ng aming programa ay maglalaman ng mga kinakailangang kagamitan para sa paglikha ng mga HTML na dokumento:
";
\n"; i-print ang "Hello"; Suriin kung gumagana ito nang tama sa pamamagitan ng pagpapatakbo ng programa nang lokal. Upang gawin ito, i-dial command line kailangan mong patakbuhin ang programa bilang isang client-server application. Upang gawin ito, kailangan mong bigyan ang mga karapatan sa pagpapatupad ng programa (para sa mga operating system kung saan ito ay may kaugnayan), at ilagay ito sa isang direktoryo kung saan kinikilala ng web server ang mga programa bilang mga CGI application. Bilang default, ito ang direktoryo ng cgi-bin, kung saan dapat ilagay ang aming programa. Upang patakbuhin ang programa, kailangan mong i-type ang URL nito sa window ng lokasyon: http://localhost/cgi-bin/filename Paano maglipat ng data sa pagitan ng kliyente at server? Tiningnan na namin kung paano maglipat ng data mula sa server patungo sa kliyente. Ang susunod na hakbang ay ang paglipat ng data mula sa kliyente patungo sa server at lumikha ng isang kliyente na isinasaalang-alang ang impormasyong inilipat sa server. Mayroong ilang mga PARAAN kung saan maaari kang maglipat ng impormasyon sa server; Ang pinakakaraniwan ay ang GET method, na nagpapasa ng data sa URL, at ang POST method, na nagpapasa ng data sa katawan ng kahilingan. Ang kawalan ng una ay ang limitadong halaga ng ipinadalang impormasyon (hanggang sa 127 bytes), ang kawalan ng pangalawa ay ang kahirapan sa pagbuo ng isang kahilingan. Sa katunayan, upang makabuo ng kahilingan gamit ang GET method, sapat na ang pagsulat ng tandang pananong pagkatapos ng URL ng tawag at ilista ang mga pares ng “name=value” sa pamamagitan ng ampersand: http://localhost/cgi-bin/test2. cgi?v1=vasya&v2 =petya at iba pa. Ngayon ay kailangan mong makuha ang data na ito sa server, kung saan kailangan mo lamang makuha ang mga nilalaman variable ng kapaligiran Ngayon, kung tinawagan mo ang script gamit ang URL sa itaas, hahanapin ng module ang stream variable na "v1" sa natanggap na data, at kapag nahanap na ito, itatalaga nito ang halaga nito sa scalar $v1, na ngayon ay magiging katumbas ng “vasya”. Upang kumpirmahin ang kawastuhan ng aming mga konstruksyon, magpatakbo tayo ng program na naglalarawan sa paglilipat ng data na ito: i-print ang "";
gumamit ng CGI qw(param);
$v1=param("v1");
$v2=param("v2");
Kaya ang aming buong unang programa ay magiging ganito:
Ang ikatlong linya ng aming programa ay maglalaman ng mga kinakailangang kagamitan para sa paglikha ng mga HTML na dokumento: ";
Ang ikatlong linya ng aming programa ay maglalaman ng mga kinakailangang kagamitan para sa paglikha ng mga HTML na dokumento: ";
Ang ikatlong linya ng aming programa ay maglalaman ng mga kinakailangang kagamitan para sa paglikha ng mga HTML na dokumento: ";
i-print ang "Hello, $v1 , $v2 !!!";
Ang ikatlong linya ng aming programa ay maglalaman ng mga kinakailangang kagamitan para sa paglikha ng mga HTML na dokumento:
";
Ang pamamaraan ng POST ay nagpapadala ng data sa katawan ng kahilingan, at dapat itong matanggap sa pamamagitan ng input stream ng programa (hayaan kong ipaalala sa iyo na kapag ang programa ay inilunsad ng web server, ito ay ipinadala sa HTTP protocol). Ginagamit ang mga form upang magpadala ng data gamit ang paraang ito sa HTML. Halimbawa, sa pamamagitan ng pagsasagawa ng form sa ibaba sa kliyente, makakakuha tayo ng eksaktong parehong resulta tulad ng sa nakaraang halimbawa: <HTML>
Ang CGI module na nagpoproseso ng data ng input ay gumagana nang eksakto kapag gumagamit ng GET na paraan at kapag gumagamit ng POST na paraan. Mga madalas itanong (dalawang bahagi) Ang ilang materyal ay ginagamit mula sa "Perl FAQ na ginawa ni SLY Golovanov, 2:5020/794.13" Saan ako makakakuha ng dokumentasyon ng Perl?<имя_модуля>Una, kapag na-install ang Perl, idinaragdag nito ang perldoc command sa iyong system. Patakbuhin ito gamit ang perldoc switch (ie perldoc perldoc) at sasabihin nito sa iyo kung paano ito gamitin. Para sa mga module gawin ang perldoc<имя_функции>Pangalawa, mayroong ilang mga libro sa Perl sa Russian: 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/ At sa Ingles: 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/ %%%%%%% %%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%% % At dito maaari kang makakuha ng mga handa na script para sa iba't ibang layunin: www.script.ru www.codemanual.com %%%%%%%% %%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%% Ano ang gagawin kung ang iyong script ay patuloy na gumagawa ng exit code number 500 (panloob error sa server)? 1. Subukang patakbuhin ang programa nang lokal sa pamamagitan ng pag-type sa command line: perl filename (kung saan ang filename ay alam mo kung ano). Mangyaring tandaan na kung nagtatrabaho ka sa isang Unix system, kung saan bilang karagdagan sa ikalimang perlas na iyong na-install, malamang na mayroon ding built-in na pang-apat, at ito ay hindi isang katotohanan na ito ay matatagpuan sa ibang pagkakataon sa mga landas, ito ay makatuwiran. mag-type
Tiyaking naroroon ang naturang linya sa iyong programa bago mag-output ng anumang character sa HTTP stream. Sa madaling salita, ang print command na ito ay dapat na isagawa bago ang anumang iba pang print command. 3. Kung hindi ito magdulot ng mga resulta, suriin kung tama ang Perl na iyong tinatawagan. Sa maraming UNIX system, ang ikaapat na Perl ay matatagpuan sa landas:/usr/local/perl at ang panglima sa daan:/usr/local/bin/perl Kung sakali, tiyaking naka-install ang ikalimang Perl sa system. 4. Kung hindi ito makakatulong, subukang tandaan kung ang file na kasama ng iyong script sa pag-edit ay naproseso sa mga text editor mula sa Windows. Siyempre, ito ay may kaugnayan lamang kung pinapatakbo mo ang script sa isang Unix system. Ang katotohanan ay ang Windows at Unix ay may magkakaibang mga character na nagtatapos sa linya. Anumang built in Windows editor gumagana sa mga dulo ng karaniwang linya ng Windows, ngunit hindi maipatupad ng Unix ang ganoong file. Upang labanan ang epektong ito, inirerekumenda na lumikha at mag-edit ng mga file lamang sa mga Unix system, o lumikha at mag-edit ng mga ito sa Windows lamang gamit ang built-in na editor ng FAR manager, na nagpapahintulot sa iyo na piliin ang uri ng file na gagawin. sa pamamagitan ng pagpindot sa shift-F2. Bilang default, ginagamit ng editor na ito ang mga line ending na nasa file na (iyon ay, ang isang file na ginawa sa UNIX ay maaaring i-save "as is" nang hindi iniisip ang uri nito).
Kung ang iyong script ay nagawa na sa
Windows standard )
{
, at gusto mong patakbuhin ito sa Unix, gamitin, halimbawa, ang program na ito:
$v1 = "\x0d";
}
buksan ang A, "f1";
habang ($line=
$line =~ s/$v1//g;
$itog .= $line;
Ang program na ito ay bubukas para sa pagbabasa ng isang file na pinangalanang f1, na matatagpuan sa site ng paglulunsad, binabasa mula doon ang lahat ng mga linya sa turn, na pinapalitan ang pagtatapos ng bawat isa sa kanila. Pagkatapos magbasa, binubuksan ng programa ang parehong file bilang isang bago para sa pagsusulat at isinusulat ang resulta dito. 5. Bilang huling pagkakataon, suriin kung ang script ay may mga karapatan na basahin at isagawa sa bahagi ng user kung saan tumatakbo ang web server. Hindi, kailangan mo pa ring suriin ito.
Kung hindi ito makakatulong sa iyo, sumulat sa kumperensya. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%% %%%%%%%%%%% Paano tingnan ang lahat ng mga variable ng environment ng web server na kasalukuyang aktibo? para sa (mga key %ENV) ( i-print ang "$_ = $(ENV($_))\n") %%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Ano ang cookies at para saan ang mga ito?
Ang mga susi ay isang paraan upang magbukas ng file sa disk ng kliyente. Dahil ang naturang file ay isang potensyal na virus, ang pamamaraang ito ay dapat na maayos na protektado sa antas ng browser. Maaaring mai-install ang susi para sa tagal ng tumatakbong browser o para sa isang tiyak na panahon. Para sa unang uri ng mga susi, hindi mo kailangang tukuyin ang oras kung kailan matatanggal ang susi, para sa pangalawang uri, kailangan mong tukuyin ang oras na ito, at sa isang format na naa-access sa browser. Kung hindi maitakda ng browser ang mga petsa sa kalendaryo nito kung kailan dapat tanggalin ang susi, buburahin nito ito sa unang pagkakataong isara mo ang programa. Upang i-automate ang proseso ng pag-compile ng petsa, ginagamit ang isang pamamaraan na nagtatakda ng petsa nang mas maaga ng isang buwan mula sa kasalukuyang sandali:
sub get_cookie_date(
my(@day, @mon, $i, $count, $sec,$min,$hours,$mday,$mon,$year, $wday, $yday,
$isdst, $result);
($seg,$min,$oras,$mday,$mon,$taon, $wday, $yday, $isdst)=gmtime(oras+2592000);
@day=("Linggo", "Lunes", "Martes", "Miyerkules", "Huwebes", "Biyernes",
"Sabado");
@mon=("Ene", "Peb", "Mar", "Abr", "Mayo", "Hun", "Hul", "Ago", "Sep", "Okt",
"Nob", "Disyembre");< 10){$year = "0$year";}
}
kung($taon >= 100)(
$taon = $taon - 100;
kung ($ taon
}
$result=$day[$wday].", ".$mday."-".$mon[$mon].."-".$year." ".$oras.":".$min.":".$sec." GMT";
ibalik ang $resulta; Huwag kalimutang ilagay sa ilang scalar ang landas sa iyong programa mula sa ugat ng kaukulang lugar ng server. Hindi na kailangang tukuyin ang pangalan ng programa; ipapadala ito nang hiwalay. Halimbawa:
$path = "/cgi-bin";
Ngayon ay maaari mong palaging i-install ang susi sa pamamagitan ng pagsasagawa ng sumusunod na piraso ng code sa iyong programa:
Upang mabasa ang susi, ang isang espesyal na pamamaraan ay ibinigay din: sub get_cookie(
my (%cook, @temp, $i, $count, $key, $value);
(@temp)=split(/;/, $ENV("HTTP_COOKIE"));
$count=@temp;
para sa ($i=0; $i<$count; $i++){
$temp[$i]=~s/ //;
($key, $value)=split(/=/, $temp[$i]);
$cook($key)=$value;
}
ibalik ang %cook;
}
Pagkatapos nito, maaari mong makuha ang pangunahing halaga, halimbawa, tulad nito: if ($ENV(HTTP_COOKIE))($cookies=1; %cookies=get_cookie();)
iba pa ($cookies=0;)
kung ($cookies==1)
{
$login=$cookies("login");
$pass=$cookies("password");
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%% %%%%%%%%%%% Paano kumopya ng file mula sa network?
Ang pinakamadaling paraan ay ang pag-install ng libwww module sa iyong system, na nagbibigay-daan sa iyong gawin ito. Narito ang isang halimbawa ng paggamit nito:
#!/usr/local/bin/perl
gumamit ng LWP::UserAgent;
gumamit ng CGI qw(header);
aking $URL = "http://www.rbc.ru/kpc/topnews/news_inc.html";
my $res = LWP::UserAgent->new->request(new HTTP::Request GET => $URL);
binmode(STDOUT);
i-print ang $res->nilalaman; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%% %%%%%%%%%%% Paano kumopya ng file sa server?
gumamit ng CGI qw(param);
Upang gawin ito, kailangan mong gamitin ang Multipart encoding ng paraan ng post na ito ay nagpapahintulot sa iyo na maglipat ng kahit na mga binary file sa server, at ang kanilang laki ay hindi limitado. Sa kasamaang palad, hindi lahat ng browser ay sumusuporta sa encoding na ito. Ang Netscape ay mayroon nito mula noong bersyon 2, MSIE mula noong bersyon 3.02. Narito ang isang halimbawa ng paggamit ng paraang ito:
#!/usr/local/bin/perl
$mode=param("mode");
$file=param("file");
# direktoryo kung saan nakasulat ang natanggap na file.
{
Kaya ang aming buong unang programa ay magiging ganito:
$fup = "/huge/httpd/htdocs/ufo/up";
kung ($mode eq "upload")
@name= split(/\\/, $file);
@name= reverse(@name);
($file1) = @pangalan;
$file_new="$fup/"."$file1";
buksan ang A, "+>$file_new";
binmode A;
{
binmode $file;
}
buksan ang A, "f1";
Ang ikatlong linya ng aming programa ay maglalaman ng mga kinakailangang kagamitan para sa paglikha ng mga HTML na dokumento: ";
Ang ikatlong linya ng aming programa ay maglalaman ng mga kinakailangang kagamitan para sa paglikha ng mga HTML na dokumento:
habang ($bytesread = read($file, $buf, 1024))
";
Ang ikatlong linya ng aming programa ay maglalaman ng mga kinakailangang kagamitan para sa paglikha ng mga HTML na dokumento: ";
Ang ikatlong linya ng aming programa ay maglalaman ng mga kinakailangang kagamitan para sa paglikha ng mga HTML na dokumento:
";
Ang ikatlong linya ng aming programa ay maglalaman ng mga kinakailangang kagamitan para sa paglikha ng mga HTML na dokumento:";
}
print A $buf;
{
Kaya ang aming buong unang programa ay magiging ganito:
Ang ikatlong linya ng aming programa ay maglalaman ng mga kinakailangang kagamitan para sa paglikha ng mga HTML na dokumento: ";
Ang ikatlong linya ng aming programa ay maglalaman ng mga kinakailangang kagamitan para sa paglikha ng mga HTML na dokumento: ";
Ang ikatlong linya ng aming programa ay maglalaman ng mga kinakailangang kagamitan para sa paglikha ng mga HTML na dokumento:
print "Ang file ay matagumpay na nailipat sa server.
elsif ($mode eq "")
Ang ikatlong linya ng aming programa ay maglalaman ng mga kinakailangang kagamitan para sa paglikha ng mga HTML na dokumento:
";
Ang ikatlong linya ng aming programa ay maglalaman ng mga kinakailangang kagamitan para sa paglikha ng mga HTML na dokumento:";
}
name=\"upload\">"; Mag-upload ng file:
Mga madalas itanong (tatlong bahagi) Paano magpadala ng liham (sa isang UNIX system).
Upang gumana sa mail sa mga sistema ng UNIX, tradisyonal na ginagamit ang programang Sendmail. Maaari mo itong ma-access nang direkta, o maaari mong gamitin ang mail command. Sa anumang kaso, kailangan mo munang ihanda ang mga address sa pamamagitan ng pagpapalit ng "@" na simbolo sa mga ito ng "\@" - kung hindi, ang programa ay hindi maaaring isagawa. kung saan ang $mails ay isang address o isang serye ng mga address na pinaghihiwalay ng mga puwang. Tradisyonal na ipinapadala ang mga liham sa koi-8 encoding, kung saan dapat isalin ang aming teksto. Magagawa ito sa pamamagitan ng pagsulat ng katawan ng mensahe, halimbawa, sa scalar $as4 at pagkatapos ay gawin ang sumusunod na operasyon sa mga ito (upang i-convert mula sa 1251 encoding sa koi-8 encoding):
$as4 =~
tr/ABVGDEZHZIYKLMNOPRTUFHTSCHSHSSHHYYYYYAabvgdezhzijklmnoprstufhtsshshshjyeyeyoyey/bvchzdetsy
klmnoprtufhzhigyuyeyashshaasBVCHZDETSYKLMNOPRTUFHZHIGYUYEYASCHASi?/;
Buksan ang MAILL, "|mail -s \"Subject\" $mails";
# Ang $mails scalar ay naglilista ng lahat ng mga address na pinaghihiwalay ng mga puwang
i-print ang MAILL "$as4"; # ito ang katawan ng liham isara ang MAILL; Gamit ang Sendmail program maaari kang magpadala ng sulat gaya ng sumusunod:
bukas (MAIL, "|/usr/lib/sendmail -f $from_addr $mails");
print MAIL "Subject: subject_text\n";
print MAIL "content-type: text/html; charset=koi8-r\n\n";<$to_addr>print MAIL "Para kay: $user
\n"; # Aling address ang sasagutin.
i-print ang MAIL "$as4";
isara ang MAIL; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%% %%%%%%%%%%% Paano kumopya ng file sa server?
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%% %%%%%%%%%%% Paano magbasa ng tinanggap na liham?
Ang pinakamadaling paraan ay ang paggamit ng mail library.
gumamit ng Mail::POP3Client;<= $pop->$pop = bagong Mail::POP3Client("login", "password", "mail.server.ru");
para sa ($i = 1; $i
Bilangin; $i++) (
$bbb = $pop->Katawan($i);
$aaa = $pop->Head($i);
foreach ($pop->Head($i)) (/^(Mula|Subject): / at i-print ang $_, "\n";)
# $pop->Delete($i); #ganito ang pagtanggal nila ng nabasang sulat
}
i-print ang "$aaa\n"; i-print ang "$bbb\n";%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%% %%%%%%%%%% LWP FAQ ni Paul Kulchenko ( [email protected]
), na-update noong 04/03/2000 Ito ay isang paglalarawan ng isang LWP module (minsan tinatawag na LibWWW) na naglalaman ng maraming kapaki-pakinabang na function. ================================================================== === =================== 1.1. Paano makakuha ng text file (http, ftp)? 1.2. Paano makakuha ng jpeg/gif/bmp file at ibalik ito? 1.3. Paano ma-access ang file na protektado ng password? 1.4. Paano mag-set up ng REFERER at iba pang mga parameter ng header ng HTTP? 1.5. Paano makakuha ng tinukoy na bahagi ng file (unang MAXSIZE bytes)? 1.6. Paano kumuha at mag-set up ng cookies? 1.7. Paano tukuyin ang mga proxy server? 1.8. Paano suriin para sa pag-redirect? 1.9. Paano lumikha ng mga parameter para sa pamamaraan ng POST? ================================================================== === =================== 1.1. Paano makakuha ng text file (http, ftp)? Paano makatanggap ng file sa pamamagitan ng http o ftp gumamit ng LWP::UserAgent;";
aking $URL = "http://www.rbc.ru/kpc/topnews/news_inc.html";
Aking $URL = "
================================================================== === =================== 1.2. Paano makakuha ng jpeg/gif/bmp file at ibalik ito? Paano kumuha ng larawan. [email protected]
gumamit ng CGI qw(header -no_debug);
$URL="
http://a100.g.akamaitech.net/7/100/70/0001/www.fool.com/art/new/butts/go99
.
gif";
my $res = LWP::UserAgent->new->request(new HTTP::Request GET => $URL);
binmode(STDOUT);
print $res->is_success ? (header("larawan/gif"), $res->content)
: (header("text/html"), $res->status_line);
================================================================== === =================== 1.3. Paano ma-access ang file na protektado ng password? Paano magpasok ng password. MAGSIMULA(
packageRequestAgent;
#!/usr/local/bin/perl
@ISA = qw(LWP::UserAgent);
Sub new ( LWP::UserAgent::new(@_); )
sub get_basic_credentials ( ibalik ang "user", "password")
}
gumamit ng CGI qw(header -no_debug);
Aking $res = RequestAgent->new->request(new HTTP::Request GET => $URL);
print header, $res->is_success ? $res->content: $res->status_line;
================================================================== === =================== 1.4. Paano mag-set up ng REFERER at iba pang mga parameter ng header ng HTTP? Paano magtakda ng mga variable ng environment ng session. #!/usr/local/bin/perl
gumamit ng HTTP::Mga Header;
gumamit ng CGI qw(header -no_debug);
), na-update noong 04/03/2000 Ito ay isang paglalarawan ng isang LWP module (minsan tinatawag na LibWWW) na naglalaman ng maraming kapaki-pakinabang na function. ================================================================== === =================== 1.1. Paano makakuha ng text file (http, ftp)? 1.2. Paano makakuha ng jpeg/gif/bmp file at ibalik ito? 1.3. Paano ma-access ang file na protektado ng password? 1.4. Paano mag-set up ng REFERER at iba pang mga parameter ng header ng HTTP? 1.5. Paano makakuha ng tinukoy na bahagi ng file (unang MAXSIZE bytes)? 1.6. Paano kumuha at mag-set up ng cookies? 1.7. Paano tukuyin ang mga proxy server? 1.8. Paano suriin para sa pag-redirect? 1.9. Paano lumikha ng mga parameter para sa pamamaraan ng POST? ================================================================== === =================== 1.1. Paano makakuha ng text file (http, ftp)? Paano makatanggap ng file sa pamamagitan ng http o ftp http://localhost/cgi-bin/hello.cgi
";
my $res = LWP::UserAgent->new->request(
bagong HTTP::Request(
GET => $URL,
bagong HTTP::Headers referer => "
http://www.yahoo.com
"),
);
print header, $res->is_success ? $res->content: $res->status_line;
================================================================== === =================== 1.5. Paano makakuha ng tinukoy na bahagi ng file (unang MAXSIZE bytes)? Paano makakuha ng bahagi ng isang file. #!/usr/local/bin/perl
gumamit ng CGI qw(header -no_debug);
), na-update noong 04/03/2000 Ito ay isang paglalarawan ng isang LWP module (minsan tinatawag na LibWWW) na naglalaman ng maraming kapaki-pakinabang na function. ================================================================== === =================== 1.1. Paano makakuha ng text file (http, ftp)? 1.2. Paano makakuha ng jpeg/gif/bmp file at ibalik ito? 1.3. Paano ma-access ang file na protektado ng password? 1.4. Paano mag-set up ng REFERER at iba pang mga parameter ng header ng HTTP? 1.5. Paano makakuha ng tinukoy na bahagi ng file (unang MAXSIZE bytes)? 1.6. Paano kumuha at mag-set up ng cookies? 1.7. Paano tukuyin ang mga proxy server? 1.8. Paano suriin para sa pag-redirect? 1.9. Paano lumikha ng mga parameter para sa pamamaraan ng POST? ================================================================== === =================== 1.1. Paano makakuha ng text file (http, ftp)? Paano makatanggap ng file sa pamamagitan ng http o ftp http://www.yahoo.com/
";
ang aking $MAXSIZE = 1024;
Print header;
my $res = LWP::UserAgent->new->request(
bagong HTTP::Request(GET => $URL), \&callback, $MAXSIZE);
Sub callback ( my($data, $response, $protocol) = @_; print $data; die )
================================================================== === =================== 1.6. Paano kumuha at mag-set up ng cookies? Paano i-install at basahin ang susi. #!/usr/local/bin/perl
gumamit ng CGI qw(header -no_debug);
gumamit ng HTTP::Cookies;
Aking $URL = "http://mail.yahoo.com/";
Aking $ua = bagong LWP::UserAgent;
my $res = $ua->request(new HTTP::Request GET => $URL);
my $cookie_jar = bagong HTTP::Cookies;
$cookie_jar->extract_cookies($res);
Print header;
kung ($res->is_success) (
my $req = bagong HTTP::Request GET => $URL;
$cookie_jar->add_cookie_header($req);
$res = $ua->request($req);
print $res->is_success ? $res->as_string: $res->status_line;
) iba (
i-print ang $res->status_line;
}
================================================================== === =================== 1.7. Paano tukuyin ang mga proxy server? Paano magtrabaho sa pamamagitan ng isang proxy. #!/usr/local/bin/perl
gumamit ng CGI qw(header -no_debug);
), na-update noong 04/03/2000 Ito ay isang paglalarawan ng isang LWP module (minsan tinatawag na LibWWW) na naglalaman ng maraming kapaki-pakinabang na function. ================================================================== === =================== 1.1. Paano makakuha ng text file (http, ftp)? 1.2. Paano makakuha ng jpeg/gif/bmp file at ibalik ito? 1.3. Paano ma-access ang file na protektado ng password? 1.4. Paano mag-set up ng REFERER at iba pang mga parameter ng header ng HTTP? 1.5. Paano makakuha ng tinukoy na bahagi ng file (unang MAXSIZE bytes)? 1.6. Paano kumuha at mag-set up ng cookies? 1.7. Paano tukuyin ang mga proxy server? 1.8. Paano suriin para sa pag-redirect? 1.9. Paano lumikha ng mga parameter para sa pamamaraan ng POST? ================================================================== === =================== 1.1. Paano makakuha ng text file (http, ftp)? Paano makatanggap ng file sa pamamagitan ng http o ftp http://www.yahoo.com/
";
my $ua = bagong LWP::UserAgent;
$ua->proxy(["http", "ftp"], " http://proxy.sn.no:8001/
");
$ua->proxy("gopher", "
http://proxy.sn.no:8001/
");
My $res = $ua->request(new HTTP::Request GET => $URL);
print header, $res->is_success ? $res->content: $res->status_line;
================================================================== === =================== 1.8. Paano suriin para sa pag-redirect? Paano gumawa ng pag-redirect #!/usr/local/bin/perl
gumamit ng CGI qw(header -no_debug);
), na-update noong 04/03/2000 Ito ay isang paglalarawan ng isang LWP module (minsan tinatawag na LibWWW) na naglalaman ng maraming kapaki-pakinabang na function. ================================================================== === =================== 1.1. Paano makakuha ng text file (http, ftp)? 1.2. Paano makakuha ng jpeg/gif/bmp file at ibalik ito? 1.3. Paano ma-access ang file na protektado ng password? 1.4. Paano mag-set up ng REFERER at iba pang mga parameter ng header ng HTTP? 1.5. Paano makakuha ng tinukoy na bahagi ng file (unang MAXSIZE bytes)? 1.6. Paano kumuha at mag-set up ng cookies? 1.7. Paano tukuyin ang mga proxy server? 1.8. Paano suriin para sa pag-redirect? 1.9. Paano lumikha ng mga parameter para sa pamamaraan ng POST? ================================================================== === =================== 1.1. Paano makakuha ng text file (http, ftp)? Paano makatanggap ng file sa pamamagitan ng http o ftp http://www.yahoo.com/
";
aking $URL = "http://www.rbc.ru/kpc/topnews/news_inc.html";
Print header;
i-print ang $res->request->url kung $res->previous->is_redirect;
================================================================== === =================== 1.9. Paano lumikha ng mga parameter para sa pamamaraan ng POST? Paano magpadala ng kahilingan gamit ang POST method nang hindi gumagamit ng form. gumamit ng URI::URL;
gumamit ng HTTP::Request;
#!/usr/local/bin/perl
gumamit ng CGI qw(header -no_debug);
), na-update noong 04/03/2000 Ito ay isang paglalarawan ng isang LWP module (minsan tinatawag na LibWWW) na naglalaman ng maraming kapaki-pakinabang na function. ================================================================== === =================== 1.1. Paano makakuha ng text file (http, ftp)? 1.2. Paano makakuha ng jpeg/gif/bmp file at ibalik ito? 1.3. Paano ma-access ang file na protektado ng password? 1.4. Paano mag-set up ng REFERER at iba pang mga parameter ng header ng HTTP? 1.5. Paano makakuha ng tinukoy na bahagi ng file (unang MAXSIZE bytes)? 1.6. Paano kumuha at mag-set up ng cookies? 1.7. Paano tukuyin ang mga proxy server? 1.8. Paano suriin para sa pag-redirect? 1.9. Paano lumikha ng mga parameter para sa pamamaraan ng POST? ================================================================== === =================== 1.1. Paano makakuha ng text file (http, ftp)? Paano makatanggap ng file sa pamamagitan ng http o ftp http://yahoo.com/?login=mylogin&password=mypassword
";
my $uri = bagong URI $URL;
my $method = "POST";
Aking $request;
kung (uc($paraan) eq "POST") (
aking $query = $uri->query;
(aking $url = $uri->as_string) =~ s/\?$query$//;
$request = bagong HTTP::Request ($paraan, $url);
$request->header("Content-Type" => "application/x-www-form-urlencoded");
$request->content($query);
) iba (
$request = bagong HTTP::Request ($paraan, $uri->as_string);
};
# magdagdag ng Host field kung kinakailangan sa HTTP/1.1
$request->header(Host => $uri->host_port) kung $uri->scheme ay "file";
Aking $res = LWP::UserAgent->new->request($request);
Print header, $res->is_success ? $res->content: $res->status_line;
====================================================================