сюдрхо Юишйриюми имтдрвдисис льомд йкюсис (CGI) юыъдрю
CGI-их (Common Gateway Interface Class) цюпробрюлдаис ори стики юрсдаоас: оаидьтдафд оридмтирдажки цю вжмьщидафд оридмтирдажки стики. оаидьтдафд оридмтирдажки стикис шдлхАедеюши хьедм ьлмих дрх юм лдт оаидьтс цю издмдах оаидьтдаис лдхоцдас, рол шдьлмюх имтдрмдт бедрцис сАеюцюсАею дкдлдмтдаи. зоедки оаидьти иыдас стюртс сюАдкцдажки пюрюлдтрдаис льомд сиих, ролдксющ бюцюсщдлс сдредри хьедмс CGI сйриптс. хьедм шдбичкиюх шдюсъорох оаидьтдаи, шдимюАох исими вюикши юм ломющдлхю аюфюши цю Адклдордц шдьлмюх исими. рюцбюм зоедки оаидьти шддсюаюлдаю CGI сйриптис лцболюрдоаюс цю рюцбюмющ зоедки оаидьтис пюрюлдтрдаис сию цюлойицдажкию сАедаисюбюм, дс сюшжюкдаюс ичкдею шдеимюАох сйриптис лцболюрдоаю цю шдлцдб лобеиюмдаих юыеюцбимох иби. любюкихюц, оаидьтдафд оридмтирдажки стиких шдеьлмюх люртиеи ⌠Hello World■ HTML бедрци:
#!/usr/local/bin/perl
use CGI; # эюетеирхох CGI пробрюлдаи
$q=new CGI; # шдеьлмюх юАюки CGI оаидьти
print $q - >header, # шдеьлмюх HTTP сюхюжри
$q -> start_HTML (' hello world ' ), # еиъздах HTML-с
$q -> h1(' hello world ' ), # пиредки цомис сюхюжри
$q -> end_HTML; # HTML-ис цюлхюердаю
вжмьщидафд оридмтирдажки стикис шдлхАедеюши, юрсдаоас дрхи CGI оаидьти, ролдксющ хьедм ишеиюхюц жйюеширцдаих пирцюпир. юлис мющекюц, хьедм ичюАдах вжмьщидас, рол лииыох CGI пюрюлдтрдаи, шдьлмюх HTML Юцддаи, люрхох прощдсис имцийютори цю юсд шдлцдб. дс лобюлюрюбдах хьедм ълимцю цюпробрюлдаис имтдрвдисих, любрюл бфыжцюех бюлоиздмох дрхфд лдти CGI оаидьти дрхцрожкюц. шдлцдби любюкихи адЮцюес ибиед бедрцс рюсющ ъимю любюкихи, любрюл издмдас вжмьщидафд оридмтирдажк имтдрвдисс. лхюеюри бюмсАеюедаю лцболюрдоас илюши, рол хьедм юАкю бЮирцдаюх бюрйеджки рюоцдмоаис вжмьщидаис шдлотюмю сюАдкхю юрдши (дсдми юриюм эеджкдарие ⌠standard■ вжмьщидаи) цю юр бЮирцдаюх шдьлмюх CGI оаидьти.
#/user/local/bin/perl
use CGI qw/:standard/; # эюетеирхох CGI вжмьщидаи.
print header, # шдеьлмюх HTTP сюхюжри
start_HTML(' hello world ' ), # HTML-с
h1(' hello world ' ), # пиредки цомис сюхюжри
end_HTML; # HTM-ис цюлхюердаю
юл цойжлдмтши лозеюмики любюкихдаи жлхюердсюц издмдадм оаидьтдафд оридмтирдажк стикс. иАикдх HOW TO IMPORT FUNCTIONS ил имворлющиис лисюыдаюц хж робор бюлоиздмох вжмьщидафд оридмтирдажки цюпробрюлдаю CGI.PM-ши
CGI.PM пробрюлдаис бюлочюАдаю
CGI.PM пробрюлдаис жлдтдсоаюс шдичкдаю Дьомцдх сАеюцюсАею юрбжлдмтдаи, фобЦдр 20-лцд юрюсюеюкцдажко юрбжлдмти. рол бюеюлюртиеох люхи бюлоздмдаю, зедкю пробрюлю издмдас юрбжлдмтдаис сюАдких бюлочюАдаис стикс, ролдкищ бюлоизжрдаю юсд:
print $q -> header (- type => ' image/gif ' , - expires=>' 3d ' );
зоедки юрбжлдмтис сюАдкс ъим дъдрдаю (цдвиси). юрбжлдмтис сюАдкши цици цю пютюрю юсодаис бюлоздмдаюс юрю юьес лмишемдкоаю. любюкихюц, -tipe, -Tipe цю -TYPE дрхицюибиедю. юрщ юрбжлдмтис рибс юьес лмишемдкоаю юрбжлдмтдаис сиюши. симюлцеикдши, лАокоц пиредк юрбжлдмтс жмцю Дьомцдс "-" юрбжлдмтдаис сиюши. хж пиредк юрбжлдмтс юьес "-" , люшим CGI.PM бжкисАлоас "-" зедкю цюмюрэдми юрбжлдмтдаисхеисющ.
хьедм юр жмцю бюлоиздмох ьедцю Аюфи хж хьедм юр бсжрх иби. CGI оаидьтис шдьлмис шдлцдб, бюлоичюАдх use_named_parameters( ) лдхоци рюилд юрюмжкоеюми лмишемдкоаих. дс лиюмишмдас CGI.PM-с, рол хьедм бсжрх бюлоиздмох лАокоц сюАдкиюми пюрюлдтрдаи:
$query = new CGI;
$query -> use_named_parameters(1);
$field = $query ->radio_group(' name ' =>' OS ' , ' value ' =>[' Unix ' , ' Windows ' , ' Macintosh ' ], ' default ' =>' Unix ' );
фобидрх пробрюлдас сюфобюцоц еичюАдах лАокоц дрхи юрбжлдмтих. юсдх шдлхАедеюши хьедм шдбичкиюх ибжкисАлох иби сюАдкис бюрдшд. header ( ) юрис дрх-дрхи юсдхи пробрюлю. юл шдлхАедеюши юрбжлдмти типи юрис (type);
print $q-> header (' text/HTML ' );
сАею юсдхи пробрюлдаи лощдликию ьедлох. фобЦдр сюАдкиюми юрбжлдмтдаи лоихАоедм сйюкюрс, фобЦдр люсиефд лихихдаюс цю фобЦдр hash-фд лихихдаюс. фобЦдр хьедм шдбичкиюх бюцюсщдх юрбжлдмтис рюилд типи цю пробрюлю юиыдас илюс, рющ зедкюфд жвро лосюкоцмдкию. любюкихюц, param ( ) пробрюлю бюлоиздмдаю, рол цюеюздмох CGI пюрюлдтри дрх юм лрюеюклмишемдкоаиюм лмишемдкоаюфд. юсдхи ори шдлхАедею мюэедмдаию ьедлох:
$q -> param(~name =>' veggie ' , -value = > [' tomato ' ,' tomatho ' , ' potato ' ,' potahto ' ];
CGI.PM-ши симюлцеикдши пробрюлдаис цици рюоцдмоаю юр юрис исд роборщ сюЮирою. дсдми юриюм └HTML shortcuts■ пробрюлдаи, ролкдаищ ьлмиюм Юцддас (tags) цимюлижрюц шдьлмик бедрцдафд бюлоздмдаисюхеис. HTML Юцддас юьех роборщ ютриажтдаи (ютриажти = лмишемдкоаю ъзеики Юцис шибмих) юсдед шимююрсдаи (contents) (мюъики, ролдкищ лохюесдажкию Юцис цюъздаю цю цюлхюердаю ъзеикс шорис). рол бюмеюсАеюох ютриажтдаи цю шимююрсдаи, CGI.PM издмдас шдхюмАлдаюс, ролкис хюмюАлюц пиредк юрбжлдмтюц жмцю бюцюсщдх HTML ютриажтдаи, роборщ hash- фд лихихдадаи цю шимююрсдаи; хж исими юрсдаоадм, роборщ лолцдемо юрбжлдмтдаи. дс бюлоизжрдаю шдлцдбмюирюц:
йоци бдмдрирдажки HTML
h1 ( ) < H1 >
h1 (' some ' ,' ciontents ' ); < H1 > some contents < / H1 >
h1 ({-align =>left}); < H1 ALIGN = ⌠LEFT■>
h1 ({-align =>left}, ' contents ' ); < H1 ALIGN = ⌠LEFT■>contents < / HIZ
HTML Юцддаи жвро цюъерикдаих юыъдрикию ьедлох. CGI.PM-ши лжшюоаис цюлъздахюхеис хюесютдА юлощюмюс ъюрлоюцбдмс, хж робор бюмюсАеюеом бюлочюАдаис шдхюмАлдадаи, ролкдаищ юрсдаоадм HTML shortcates-сю, ролкдаищ лоихАоедм вибжржк врэАикдаши эюслюс. HTML Юцис ютриажтши цю бюлочюАдаис шдхюмАлдадаи сАею пробрюлюши, ролкдаищ ьлмиюм ютриажтдас вибжржки врэАикдаис бюрдшд. юр юбдриох. лоАдрАдажкоаис лифмих вибжржки врэАикдаи бюлоиздмдаиюм зедкбюм сжреикисюлдар, HTML shortcates-ис бюрцю. хж хьедм лобъомх, хьедм шдбичких бюлоиздмох вибжржки врэАикдаи, рощю юиыдах сюАдкиюм юрбжлдмтдас пробрюлис бюлочюАдаисюс. любюкихюц:
print $q->header({-type=>' image/gif ' , -espires=> ' +3d ' });
хж хьедм издмдах √w бюцюлрхедкс (Switch), врхАикюц изюеих, рюцбюм фобидрхи CGI.PM юрбжлдмтдаис сюАдкдаи йомвкиьтши лоциюм Perl-ис эюшдмдажк (built~in) вжмьщидахюм. зедкюфд Аширюц дс Ацдаю √values юрбжлдмтис црос, рощю бюлоздмдажкию лрюеюклмишемдкоаиюм лдмижши, radio button йкюстдрдаши цю лис лсбюесдаши. рол юеищикох дс шдлхАедею, хьедм бюьех рюлоцдмилд юрэдеюми:
1. бюлоиздмох юл юрбжлдмтисюхеис сАею сюАдки √values-хеис.
2. бюлоиздмох лхюержки юсодаи. любюкихюц, -Values.
3. юрбжлдмтис сюАдки эюсеих арЮзюкдаши. любюкихюц, ' √values ' .
лрюеюк пробрюлдас шджчкиюх бююйдхом рюилд сюсюрбдако сюьлд сюАдкиюми юрбжлдмтдаих, рющ юрюю сюзоедкхюоц щмоаики. любюкихюц, хьедм шдбдчкох шдбдьлмюх юрюстюмцюртжки HTTP сюхюжрис едкдаи сюАдкиюми юрбжлдмтдаис бюлоздмдаих:
print $q -> header (-type =>' text/HTML ' ,
- cost=> ' Therse smaskers ' ,
- annoyance_leisel => ' high ' ,
-complians_to => ' bit bucket ' );
дс лобещдлс шдлцдб юрюстюмцюртжк HTTP сюхюжрс:
HTTP/1.0 200 Ok
Cost: Three smaskers
Annoyance_level: high
Complaints_to: bit bucket
Contant_type: text/HTML
шдемишмох, рол ьедцю Аюфдаи бюцюихюрблмдм юетолютжрюц цдвисдаюц. HTML-ис шдльлмдки пробрюлдаи юсржкдадм сАеюцюсАею типис хюрблюмдас. дс хеисдаю сюшжюкдаюс беючкдес бюеихеюкисъимох сърювюц щекюци HTTP цю HTML ⌠standards■-даи.
юАюки оаидьтдаис шдьлмю
(оаидьтдафд оридмтирдажки стики);
$query = new CGI;
лоАцдаю шдсюсекдкис бюрэдею (POST цю GET) лдхоцдаицюм) цю шдимюАдаю иби perl5 оаидьтши сюАдких $quary.
юАюки оаидьт-йихАеюрис шдьлмю шдсюсекдки (INPUT) вюикицюм
$quary = new CGI (INPUTFILE);
хж new ( ) лдхоцс юрбжлдмтюц лиещдлх вюикис сюАдкс (handle), люшим дс лдхоци ъюийихАюес пюрюлдтрдас юл вюикицюм (юм STDIN, юм рюилдцюм). дс вюики шдичкдаю изос дрх-дрхи ворлих, ролдкищ юыъдрикию ьедлох debug-ши. (юАюк стриьомфд бюцюсекдаи nl шдлосюфыержки TAG = Value ъзеикдаих илжшюедадм). вюикис дс типи иьлмдаю save ( ) лдхоцих (иАикдх ьедлох). лрюеюки эюмюъдрдаи шдичкдаю изос шдмюАжки цю юыцбдмики.
дс симтюьси жшедас вюикис сюАдкфд лихихдаюс, ролдкищ юрис овищиюкжри АдрАи вюикис сюАдкис бюцюсющдлюц:
$quary = new CGI(\*STDIN);
хьедм шдбичкиюх имищиюкифющию бюжйдхох CGI оаидьтс вюикис сюАдких юм IO: : File оаидьтих. хж хьедм издмдах вжмьщидафд оридмтирдажк имтдрвдисс цю бсжрх CGI лцболюрдоаис имищиюкифющию вюикис сюАдкис сюшжюкдаих, дс шдбичкиюх бююйдхох restore_parameters ( ) вжмьщиих. дс юыюцбдмс бюэжлдаис примщипих цюздмдажк CGI оаидьтис лцболюрдоаюс лихихдажки сюАдкицюм.
open(IN, ⌠test.in■)|| die;
restore_ parameters(IN);
close (IN);
хьедм шдбичкиюх оаидьти-йихАеюрис имищиюкифющию юсощиютижри люсиеис лолхихдаких:
$quary = new CGI ({' dinosaur ' => ' banney ' ,
' song ' =>' I love you ' ,
' friends ' =>[qw/Jessica George Nancy /]}); юм пирцюпир цюворлютдажки URL йихАеюри √ стриьомицюм
$quary = new CGI(' dinozaur ' = ' barney ' & color=purple ' );
юм ъимюсъюр юрсдажки CGI оаидьтицюм (юляюлюц дс цжакирдаюс жйдхдас пюрюлдтрдаис сиюс, любрюл юрю оаидьтис спдщивийжр едкдас):
$old_query = new CGI;
$ new_squery = new CGI ($old_query);
рол шдьлмюх щюридки йихАеюри, юАцдмх щюридки стриьомис юм Адшис (hash) имищиюкифющиюс:
$ empty_query = new CGI (⌠ ⌠);
юм
$empty_query = new CGI ({ });
йихАеюрицюм бюсюыдаи ситзедаис сиис бюлотюмю
@ keywords=$query ->keywords
хж сйрипти изо бюлочюАдажки роборщ <INDEX> чдамис шдцдби, бюрэджки бюсюыдаи ситзедаи шдичкдаю лииыох keyword ( ) лдхоцих.
сйриптисхеис бюцющдлжки зедкю пюрюлдтрис сюАдкдаис лотюмю
@ names = $query -> param
хж сйрипти бюлочюАдажки изо пюрюлдтрдаис сиих (д.и. ⌠name1=value1 & name2 = value2 & name3 = value3■), patram ( ) лдхоци цююаржмдас пюрюлдтрдаис сюАдкдас сиис сюАих. хж сйрипти бюлочюАдажки изо роборщ <ISINDEX> сйрипти, люшим иьмдаю рюилд йомйрдтжки пюрюлдтри сюАдких ' keywords ' .
шдмишемю: роборщ лд-5 едрсиюши, пюрюлдтриюми сюАдкдаис люсиеи цюаржмдажки иьмдаю ибиед рибих, рющ ис риби, ролдкшищ пюрюлдтрдаи юриюм бюмсюфыержкми ворлюши (лАокоц дс юр дАдаю spec цю юлбеюрюц юрюю бюрюмтирдажки).
рюилд сюАдкиюми пюрюлдтрис лмишемдкоаис юм
лмишемдкоадаис лотюмю:
@values = $query -> param (' foo ' );
юм
$value = $query -> param (' foo ' );
бюцюсщдлс дс param ( ) лдхоци рюилд юрбжлдмтс сюАдкиюми пюрюлдртис лмишемдкоаис лосютюмюц. хж пюрюлдтри лрюеюклмишемдкоаиюмию (любюкихюц, лрюеюклмишемдкоаиюми юрэдеюми лщжрюе (scrolling)) сиюши), хьедм шдбичкиюх лииыох рюилд люсиеи. сАею шдлхАедедаши лдхоци юаржмдас рюилд дрх лмишемдкоаюс.
сюАдкиюми пюрюлдтрис лмишемдкоаис (лмишемдкоадаис) цюздмдаю:
$quary -> param(' foo ' , ' an ' , ' array ' , ' of ' values ' ); дс юздмдас ' foo ' сюАдкиюми пюрюлдтрис лмишемдкоаюс лмишемдкоадаис люсиефд. дс юрис дрхи АдрАи AFTER едкис лмишемдкоаис шдсющекдкюц, рощю сйрипти изо бюлочюАдажки люмюлцд дрхАдк (сАею АдрАи юрис пюрюлдтрис бюцювюрею, ролдкищ цюшедажкию зедкю лдхоцис лидр, ролкдаищ ворлис дкдлдмтдас юр ьлмиюм).
param ( ) юбрдхед бюлоищмоас бюлочюАдаис сюАдкиюм пюрюлдтржк стикс, ролдкищ юыъдрики иьмдаю жвро цдтюкжрюц лобеиюмдаих:
$query ->parqam(-name =>' foo ' ,-values=>[' an ' , ' array ' , ' of ' , ' values ' ]);
юм
$query -> param (-name=>' foo ' , -value => ' thevalue ' );
сюАдкиюм пюрюлдтрисюхеис цюлютдаихи лмишемдкоадаис лидрхдаю:
$query ->append(-name =>' foo ' , -values =>[' yet ' , ' more ' , ' values ' ]);
дс лижхихдас сюАдкиюм пюрюлдтрис рюилд лмишемдкоаюс юм лмишемдкоаюхю сиюс. дс лмишемдкоадаи лиждрхцдаю пюрюлдтрс аокоши, хж иби юрсдаоас, сАею шдлхАедеюши пюрюлдтри шдиьлмдаю. шдемишмох, рол дс лдхоци щмоас лАокоц сюАдкиюми юрбжлдмтис бюлочюАдаис симтюьсс.
зедкю пюрюлдтрдаис илпортирдаю сюАдкхю сиюши:
$query -> import_names(' R ' );
дс Дьлмис щекюцдаис лилцдероаюс ' R ' сюАдкхю юрдши. любюкихюц,
$R : :foo, @R: foo. бюсюыда ситзеюхю сидаисюхеис щекюци @R : : keywords бюлоэмцдаю. хж сюАдкхю юрд юрюю лощдлжки, дс лдхоци ибжкисАлдас ' Q ' √с. бюврхАикдаю: юр шдлоитюмох рюилд ' main ' √ши; дс юрис жсюврхАодаис цици рисйи !!!
чедк едрсидаши лдхоцс дрьею import ( ). 2.20 едрсиюши дс сюАдки юлобцдажки изо, рол юбедщикдаимю йомвкиьти эюцблжк perl лоцжкис import опдрюторхюм.
рюилд пюрюлдтрис лхкиюмюц юлобцдаю
$query -> delete (' foo ' );
дс лхкиюмюц юлоюбцдас пюрюлдтрс. иби фобЦдр сюсюрбдакою пюрюлдтрдаис Адклдордц цюздмдаисюхеис, ролдкхю бюцющдлю юр бсжрх сйриптис бюлочюАдадас шорис. хж хьедм издмдах вжмьщидаис бюлочюАдаис имтдрвдисс, бюлоиздмдх ⌠Delete ( )■ рол юищикох йомвкиьти Perl-ши эюцблжк delete опдрюторхюм.
зедкю пюрюлдтрдаис юлобцдаю
$quiery ->delete_all ( );
дс бююсжвхюедас CGI оаидьтс лхкиюмюц. иби шдичкдаю изос сюсюрбдако илисюхеис, рол цюрължмцдх зедкю бюэжлдаю юрис юыдажки, рощю хьедм ьлмих шдсюесда ворлюс. бюлоиздмдх Delete_all ( ) хж хьедм издмдах вжмьщидаис бюлочюАдаис имтдрвдисс.
пюрюлдтрдаис сиюфд пирцюпири лилюрхею:
SQ -> param_fetch(' address ' ) ->[1}=' 1313 Mosking bt~id Lane;
хж хьедм бЮирцдаюх пюрюлдтрдаис сиюфд лилюрхею исдхи АдрАих, ролдкищ юрюю жфржмедкзовики юл лдхоцих, хьедм жмцю бююйдхох пирцюпири reference (лихихдаю) люсфд param_fetch ( ) лдхоцих сюхюмюцо сюАдких. иби цююаржмдас лилхихдадкхю люсиес сюАдкиюм пюрюлдтрдафд, ролдкищ шдлцдб хьедм шдбичкиюх бюлоиздмох роборщ бсжрх. хьедм шдбичкиюх, юбрдхед, бюлоиздмох рюилд сюАдкиюми юрбжлдмтдаис стики -name юрбжлдмтис сюшжюкдаих.
сйриптис лцболюрдоаис шдмюАею вюикши:
$query -> save (Filehandle)
дс эюъдрс ворлис лилцимюрд лцболюрдоаюс вюикши. хьедм шдбичкиюх иби жйюм ъюийихАох new ( ) лдхоцих вюикис сюАдкис бюхеюкисъимдаих. шдемишмох, рол Filehandle шдичкдаю изос вюики, юрАи юм сАею рюилд.
шдмюАжки вюикис ворлютию:
NAME1=VALUE1
NAME1=VALUE1 '
NAME2=VALUE2
NAME3=VALUE#
роборщ сюАдки, юсдед лмишемдкоаю юрис UBL escaped. лмишемдкоаиюми CGI пюрюлдтрдаи ъюрлоицбимдаиюм, роборщ бюлдордажки сюАдкдаи. эюмюъдрдаи бюмщюкйдедажкию "=" мишмих. хьедм шдбичкиюх эюъдрох лрюеюки эюмюъдри цю ъюийихАох исими жйюмед new-с рюлоцдмилд бюлочюАдаих. хьедм шдбичкиюх бююйдхох дс вюикис бюАсмих append рдяилши, рющ сюшжюкдаюс лобщдлх шдьлмюх стжлюрхю люртиеи ъибми юм лолАлюрдадкхю шдйихАедаис дмю. бюмеиАикох лрюеюки эюмюъдрис шдьлмис лойкд любюкихи:
USE CGI;
open Z(OUT,■>>test.out■) || die;
$ records = 5;
foreach (o ... $ records) {
my $q = new CGI;
$q -> param (~name => ' counter ' , -value =>$_);
$q -> save (OUT);
}
close OUT;
# Адклдордц бюАсмю ъюсюйихАюц
open (IN, ⌠test.out■) || die;
while (!eof (IN)) {
my $q -> new (IN);
print $q -> param (' counter ' ), ⌠\ n■;
}
' save/restore-ши бюлоздмдажки вюикис ворлюти ибиедю, рющ Genome Center ' √ис ломющдлхю бющекис ворлюти ⌠Boulderio■ цю шдбичкиюх бюлоиздмох, юбрдхед, ломющдлхю аюфис шдьлмю Boulderio жтикитдаих. иАикдх HTTP:// www.genome.wi.mit edu / genome_software / other / boulder.HTML хж хьедм бсжрюх бюлоиздмох вжмьщидафд оридмтирдажки имтдрвдиси, юл лдхоцис дьспортирдажки сюАдкию save_paremeters ( ).
вжмьщидафд оридмтирдажки имтдрвдисис
бюлоздмдаю
вжмьщидафд оридмтирдажки имтдрвдиси рол бюлоиздмох, хьедм жмцю цююфжстох ролдки CGI.PM пробрюлдаи юм пробрюлюхю силрюекддаи шдлоитюмох хьедми сйриптдаис сюАдкхю юрдши. лщирдю ис АюрЦдаи, ролкдаищ цюйюеширдажкию юл илпортирдаюсхюм:
use CGI < лдхоцдаис сию >;
эюлохекики лдхоцдаи иьлмдаю шдлотюмики лилцимюрд пюйдтши; хьедм шдбичкиюх бюлоичюАох исими пирцюпир хюецюпиредкюц CGI оаидьтис шдьлмис бюрдшд. любюкихи беиэедмдас, робор шдлоеитюмох param( ) цю header( ) лдхоцдаи цю шдлцдб робор бюлоеиздмох исими:
use CGI ' param ' , ' header ' ;
print header (' text / plain ' );
$ zipcode = param (' zipcode ' );
жвро Аширюц, хьедм шдлобюьех фобюци вжмьщидаис силрюекддаи Цбжвдафд лихихдаих сюАдких. вжмьщидаис зедкю силрюекддаи иъздаиюм ⌠:■-их роборщ ⌠: HTML3■ (tag-даисюхеис бюмсюфыержк HTML 3 стюмцюртши). юьюю вжмьщидаис силрюекддаис сию, ролдкищ хьедм шдбичкиюх шдлоитюмох
: CGI
шдлоюьес зедкю CGI цюлжшюедаис лдхоцдаи, роборищюю param ( ), path_info ( ) цю лисхюмдаи.
: form
шдлоюьес ворлис шдесдаис любдмдрирдадки лдхоцдаи, роборищюю text field ( ).
: HTML2
шдлоюьес зедкю лдхоцдаи, ролкдаищ бдмдрющиюс жйдхдас HTML 2.0 стюмцюртжк дкдлдмтдас.
: HTML3
шдлоюьес зедкю лдхоцдаи, ролкдаищ бдмдрющиюс жйдхдадм HTML 3.0 шдлохюеюфдажк дкдлдмтдас (роборищюю, < table >, < super > цю< sub >).
: netscape
шдлоюьес зедкю лдхоцдаи, ролкдаищ бдмдрирдаюс жйдхдадм Netscape цюлюАюсиюхдадк HTML бювюрходадас.
: HTML
шдлоюьес зедкю лдхоцдаи, ролкдаищ бдмдрирдаюс жйдхдадм шдлойкдадас (д. и. ' HTML2 ' + ' HTML3 ' + ' + ' netscape ' ) ...
: standard
шдлоюьес ⌠standard■ хеисдадаи, ' HTML2 ' , ' HTML3 ' , ' form ' цю ' CGI. '
: all шдлоюьес зедкю шдсючкдадки лдхоци. сржки сиисюхеис иАикдх CGI.PM йоци, сюцющ щекюци % Tags юрис бюмсюфыержки.
хж хьедм шдлоитюмх вжмьщиис сюАдкс, ролдкищ юрюю CGI.PM-ис мюъики, дс лоцжки цююлжшюедас люс роборщ рюилд юАюк HTML Юцдс цю бдмдрющиюс бюжйдхдас шдсютзеис ьедпробрюлюс. хьедм шдбичкиюх шдлцдб бюлоиздмох иби роборщ мдаислидри сАею HTML Юцд. дс юрис бюхеюкисъимдажки сърювюц бюмеихюрдаюци HTML ⌠Standard■-исюхеис. любюкихюц, ехьеюх Microsoft-с шдлоюьес юАюки Юцд сюАдких <GRADIENT> (ролдкищ ъюкдйюес лолАлюрдакис сюлжшюо любицюс ларжмюеи брюцидмтжки шдесдаих, сюмюл йолпижтри эюитеирхдаоцдс). хьедм юр бЮирцдаюх цюдкоцох CGI.PM √ис юАюк едрсиюс, рол цюиъзох лиси бюлоздмдаю жшжюкоц:
use CGI qw / : standard: HTML3 gradient /;
print gradient({-start =>' red ' , -end => ' blue ' });
шдемишмох, рол бюлохекдаис сиэьюрис имтдрдсдаисюхеи CGI.PM юр издмдас юл стюмцюртс Exporter manpage syntax эюсютеирхи силаокодаис цюсюфжстдакюц. лолюеюкши дс шдичкдаю шдищеюкос. хж хьедм шдлоитюмх мдаислидр CGI лцболюрдоаис лАюрцюлЮдр лдхоцицюм ворлис любдмдрирдадк лдхоцдас, бюэжлдаих шдьлмики CGI оаидьти иьмдаю шдьлмики цю имищиюкифдажки юетолютжрюц. пиредкюц, хьедм издмдах юл лдхоцдаицюм мдаислидрс, ролдкищ лоихАоес дрхдрхс изос ъюрлоцбдмики. юлюс лидйжхемдаю param ( ), textfiled ( ), sumbit ( ) цю люхи лсбюесдаи (хж хьедм бЮирцдаюх CGI оаидьтфд пирцюпири лилюрхею, хьедм шдбичкиюх ипоеох иби бкоаюкжр щекюцши $CGI : : Q). CGI.PM лдхоцдаис илпортирдаих хьедм шдбичкиюх шдьлмюх шдсюАдцюеюц дкдбюмтжри сйриптдаи:
use CGI qw /: standard/;
header,
start_HTML (' Simple Script ' ),
h1(' Simple Script ' ),
start_form,
⌠What▓s your name? ⌠, textfield (' name ' ), p,
⌠What▓s the combination?■,
cheekbox_group (-name =>' Words ' ,
-values => [' eenie ' , ' meenie ' , ' minib ' , ' moe ' ],
-defauts => [' eenie ' , ' moe ' ]), p,
⌠What▓s your favorite color?■,
popul_menu (-name => ' color ' ,
-values => [' red ' , ' green ' , ' blue ' , ' chartreuse ' ]), p,
submit ,
end_form,
hr, ⌠ \ n■;
if (param){
⌠Your name is ⌠, em (param (' name ' )), p,
⌠The keywords are:■, em(Join(⌠,■, param(' words ' ))), p,
⌠Your favorite color is■, em (param(' color ' )),■in■;
}
print end_HTML;
PRAGMAS
вжмьщидаис силрюекддаис бюрцю, юрис pragmas-даис бюрйеджки рюоцдмоаю, ролкдаищ хьедм шдбичкиюх шдлоитюмох pragmas-даис ъим зоедкхеис иъдрдаю цдвиси (-) цю щекис ъдсс, ролкихющ CGI.PM вжмьщиомирдас сАеюцюсАею АдрАих. пробрюлдаи, вжмьщидаис силрюекддаи цю имциеицжюкжри вжмьщидаи шдичкдаю изос шдлотюмики дрхицюибиед USE ( ) стриьомфд. любюкихюц, шдлцдб USE имстржьщиюс шдлоюьес вжмьщидаис стюмцюртжки силрюекд цю йрчюкюес бюлюрхеис рдяилс (pragma no_debug):
USE CGI qw / : standard √no_debug /;
pragmas-даис юляюлимцдки сиюю шдлцдби:
-any
рощю хьедм издмдах CGI -any, люшим мдаислидри лдхоци, ролдксющ query оаидьти едр бюлоищмоас иьмдаю бюбдажки роборщ юАюки HTML Юцд. дс мдаюс брхюех хьедм, шдлоитюмох Netscape-ис юм Microsoft HTML-ис шдлцболи бювюрходаю. юлих хьедм шдлобюьех юАюки жщмоаи Юцд:
USE CGI qw(-any);
$q = new CGI;
print $q -> gradient ({speed =>' fast ' , start =>' red ' , and =>' blue ' });
хжлщю < cite > мдаислидри рюл < / cite > иъедес лщцюри лдхоцис сюАдкс, ролдкищ жмцю изос бюбдажки роборщ HTML Юцд, бюлоиздмдх иби цици сиврхАиких юм сржкиюцющ юр бюлоиздмох.
-compile
дс иъедес лимишмдажк юетолютжрюц эютеирхжки лдхоцдаис йолпикирдаис ъимцюъим цю юрю люх бюцюцдаюс шдлцдбисюхеис. дс юрис сюсюрбдако сйриптдаисхеисющ, ролкдаищ бюшедажки юриюм цици Амих Fast CGI-ши юм mod perl-ши цю люххеис, ролкдаищ бюлифмжки юриюм Malcom Beattie▓s Perl йолпикиюторисюхеис, бюлоиздмдх иби лдхоцдахюм юм лдхоцдаис оЦюАдахюм дрхюц, ролдкхю бюлоздмдаюс хьедм бдблюех.
USE CGI qw (-compile): standard : HTML3);
юм йицде
USe CGI qw (-compile : all);
шдемишмох рол √compile pragma√с юсдхи бюлоиздмдаю зоедкхеис иъедес йолпикирдажки вжмьщидаис шдлотюмюс сюАдкхю юрдши. хж хьедм бсжрх йолпикирдаю шдлотюмис бюрдшд, бюлоиздмдх compile ( ) лдхоци (иАикдх ьедлох).
-nph
дс ьлмис цюфжстдажк сюхюжрс NPH (no parsed header) сйриптисюхеис. хьедм шдбичкиюх юлих жхАрюх сдредрс, рол сйрипти юрис NPH. иАикдх ьедлох NPH сйриптдаис хюоаюфд цисйжсию.
-autoload
дс бюцювюрюес юетоэюлтеирхедкс исд, рол мдаислидри вжмьщию, ролдкищ юр иьмдаю бюлощмоаики бюцюдщдлю CGI.PM шдсючко шдвюсдаисюхеис. дс сюшжюкдаюс лобщдлх бюлоиздмох CGI.PM вжмьщидаи силаокодаис щАрикши люхи эюлютдаис бюрдшд цю иби дАдаю mod_perl-ис лолАлюрдакдас, ролдкхющ лдАсидрдаис цюАюрЦеис дшимиюх. бюврхАикдаю: рощю √autoload чюкюшию хьедм юр шдбичкиюх бюлоиздмох вжмьщиис сюАдки врэАикдаис бюрдшд. бюлоиздмдх hr ( ) hr-ис мющекюц юм цюжлютдх subs qw / hr p header / хьедми сйриптис хюеши.
-no_debug
дс бюлорхюес арчюмдадаис цюлжшюедаис хеисдадас. хж хьедм бсжрх бюжшеюх CGI.PM сйрипти HTML-ис лисюыдаюц арчюмдаих цю хьедм юр бсжрх дкоцох CGI пюрюлдтрдас стюмцюртжки шдтюмицюм юм арчюмдаицюм, люшим бюлоиздмдх дс пробрюлю:
USE CGI qw (-no_debug : standard);
хж хьедм бсжрх бюлоиздмох арчюмдаю пюрюлдтрдаих, любрюл юрю стюмцюртжки шдтюмих, люшим бюлоиздмдх
USE CGI qw (-no_debug : standard);
restore_parameters (Join(' & ' @ ABGV);
иАикдх debug сдьщию жвро лдти имворлющиисюхеис.
-private_tempfiles
CGI.PM шджчкию шдюсржкос эютеирхжки вюики. эеджкдарие иби юбцдас эютеирхжк вюикс цродаих цирдьториюши, цю лиси шдсржкдаис шдлцдб юлоюбцдас вюикс. любрюл дс сюрисйою, роборщ юыъдрикию вюикис эютеирхеис сдьщиюши. лдорд CGI сйриптис юеторс шджчкию шдАдцос юл ломющдлдас лиси эютеирхеисхеисющ сюицжлко имворлющиис шдлхАедеюшищ йи. Unix систдлюши дс юр лоАцдаю.
цимюлижри цойжлдмтдаис бдмдрирдаю
жлдтдсоаю CGI.PM вжмьщидаи ьлмиюм цойжлдмтдас шдсржкдаис прощдсши. сюфобюцоц, хьедм ьлмих Цдр HTTPцюсюхюжрдаюс цю шдлцдб хеих цойжлдмтс. CGI.PM юьес вжмьщидаи сАеюцюсАею типис сюхюжрдаис цю HTML-даис шдсюьлмдкюц. GIF сжрюхдаис шдсюьлмдкюц, иАикдх GD.pm лоцжки. зоедки вжмьщию ьлмис HTML-ис юм HTTP-с врюблдмтс, цюжлютох стриьомс юм шдимюАох вюикши шдлцболи бюлоздмдаис лифмих.
стюмцюртжки HTTP сюхюжрис шдьлмю
эеджкдарие , пиредкюц рюсющ хьедм юйдхдах CGI сйпиптши, юрис HTTP сюхюжрис бюлотюмю. дс джамдаю арожфдрс рю типис цойжлдмтс жмцю дкоцос цю ючкдес сАею юрюжщикдадк имворлющиюс, роборищюю бюлоздмдажки дмю, цойжлдмтис еюцю цю цойжлдмти жмцю изос вюржки хж юрю. сюхюжри шдичкдаю изос бюлоздмдажки юбрдхед сдредрис цюсюлюкюеюц цю еда бедрцдаис эедмдаисюхеис сюЮиро хюмАис бюцюсюАцдкюц.
print $query -> header;
юм
print $quary -> header (' image / gif ' );
юм
prinr $quary -> header(' text / HTML ' , ' 204 No response ' );
юм
print $quary -> header(' √type =>' image / gif ' ,
-nph =>1,
-status =>' 402 Reymant requered ' ,
-espires =>' +3dzbr ,
-cookie => $cookie,
-Cost => ' $ 2.00 ' );
header ( ) юаржмдас Content-type : header. хьедм шдбичкиюх бюихеюкисъимох хьедми сюйжхюри MIME типи. хж хьедм юирэдех люс, сАею шдлхАедеюши бюэжлдаих ибжкисАлдаю text / HTML. юрюсюеюкцдажко лдорд пюрюлдтри юфжстдас стютжсис йоцс цю юцюлиюмис лидр ъюсюйихА шдтзоаимдаюс. любюкихюц, хьедм шдбичкиюх цююфжстох 204 ⌠NO response■-шдьлмюх сйрипти, ролдкищ джамдаю арожфдрс юрювдри юр лоилоьлдцос.
жйюмюсймдки любюкихи беиэедмдас сюАдкиюми пюрюлдтрдаис бюлоздмдаюс CGI лдхоцдаши юрбжлдмтдаис бюцюсющдлюц сюАдкиюми юрбжлдмтдаис стиких. цюсюшедаи пюрюлдтрдаию: - type, -status, -expires цю cookie. мдаислидр сАею пюрюлдтрс лодщкдаю тирд (hypen) цю исд цюжаржмцдаю сюхюжрис едкс, рющ сюшжюкдаюс бючкдех цююфжсто HTTP сюхюжрдаи исд, роборщ хьедм бсжрх. хюецюпиредки ьедцю Аюфдаи бюцюизеюмдаю цдвисдаши:
print $quare -> header (-Content_length => 3002);
арожфдрдаис жлдтдсоаю юр люкюедм CGI сйриптдаицюм бюлотюмдас. зоедкхеис рощю арожфдри эютеирхюес бедрцс сйрипти бюлоичюАдаю АдкюАкю. хьедм шдбичкиюх шдщеюкох арожфдрис юсдхи ьщдею √expires пюрюлдтрих. рощю хьедм лижхихдах юасокожтжр юм вюрцоаих еюцюс юл пюрюлдтрих фобидрхи арожфдрдаи цю proxy сдредрдаи цюлюкюедм бюлотюмюс еюцис бюсекюлцд. цюсюшедаию шдлцдби ворлдаи √expires едкисюхеис:
+30 s 30 сдйжмци лощдлжки лолдмтицюм
+10m 10 ъжхи лощдлжки лолдмтицюм
+1h дрхи сююхи лощдлжки лолдмтицюм
-1d бжшим
now юАкюед
+3m сюл хедши
+3m сюл хедши
+10y 10 ъдкиъюцши
Thursday, 25-Apr-1999 00:40:33 GMT мюэедмда цросю цю хюриыши
-cookie ьлмис сюхюжрс, ролдкищ джамдаю арожфдрс бюихеюкисъимос ⌠mage cookie■ сйриптхюм цюйюеширдаис зедкю шдлхАедедаши. Netscape-ис юьес спдщиюкжри ворлюти, ролдкищ шдищюес сюимтдрдсо ютриажтдас, роборищюю Юцис цюцдаю. бюлоиздмдх cookie ( ) лдхоци, рол шдьлмюх цю ипоеох прощдсис имцийюторис cookie сдсидаи. √nph пюрюлдтрс хж юьес true лмишемдкоаю шдьлмис съор сюхюжрдас, илжшюох NPH сйриптхюм. дс лмишемдкоеюмию, рол бюлоиздмох фобидрх сдредрдахюм, роборищюю Microsoft Internet Explorer , ролдкищ лодкис, рол зедкю хюеиси сйриптдаи юриюм NPH-даи.
бюцюлисюлюрхдаюци сюхюжрдаис бдмдрирдаю
print $quary -> redirect (' HTTP : || somewhere. else / in / movie / land ' );
фобЦдр, шдичкдаю хьедм юр бсжрх шдьлмюх рюилд цойжлдмти хеихом, юрюлдц лилюрхох арожфдри сюцлд, шдичкдаю юирэиох рюилд URL цювжчмдажки цыис црофд юм лолАлюрдакис сющАоердадки юцбикис лиАдцеих.
redirect ( ) вжмьщию лилюрхюес арожфдрс сАею URL-фд хж хьедм бюлоиздмдах юсдх бюцюлисюлюрхдаюс, люшим хьедм юр шбдчкдаюх бюлоитюмох сюхюжри юбрдхед. роборщ 2.0 едрсиюши. хьедм ьлмих роборщ юрюовищиюкжр location : header-с юсдед овищиюкжр URL : header-с. дс жмцю цююйлюзовикос жлдтдсоаю сдреисдалю цю арожфдрдалю.
дрхи лосюфрдаю, ролдкищ юр шдиличкию юр шдлобхюеюфох юрис ис, рол вюрцоаихлю йюеширдалю шдичкдаю юр илжшюом съорюц, рощю хьедм ьлмих бюцюлисюлюрхдаюс сАею цойжлдмтфд хьедмсюед сюитши. дс бюлоъеджкию йюрбюц ловиьрдажки оптилифющиих, ролдксющ фобидрхи сдредри издмдас. юсдх шдлхАедеюши жмцю бюлоиздмох сржки URL. юбрдхед, хьедм шдбичкиюх бюлоиздмох сюАдкиюми юрбжлдмтдаи:
print $quary -> redirect (-url =>▓HTTP :|| somewhere.
else (in / movie / land, nph =>1);
-nph пюрюлдтрис цюздмдаю true-фд шдьлмис съор сюхюжрс, ролдкищ илжшюедас NPH сйриптхюм. дс лмишемдкоеюмию Microsoft internet Explorer- схеис, ролдкищ лжшюоас лАокоц NPH сйриптдахюм.
HTML цойжлдмтис сюхюжрис шдьлмю
print $quary -> start_HTML (-title => ' Secrets of the Pyramids;
-author =>' fred @ carpicorn.org ' ,
-base => ' true ' ,
-target => ' blank ' ,
-meta => {' keywords ' => ' pharaon secret mummy ' ,
' copyright ' =>' copyright 1966 King Tut ' },
-Style => {' src ' => ' / styles / style1.CSS ' },
-BGCOLOR => ' blue ' );
HTTP сюхюжрис шдьлмис шдлцдб CGI сйриптдаис жлдтдсоаю иъздадм HTML цойжлдмтдаис бюлотюмюс. start_HTML ( ) вжмьщию ьлмис бедрцих фдцю мюъикс, сАею юрюсюеюкцдажко имворлющиис бюхеюкисъимдаих, ролдкищ люрхюес бедрцис бюрдбмоаюсю цю ьщдеюс. дс лдхоци юаржмдас HTML сюхюжрс цю < BODY > Юцдс. зедкю пюрюлдтри юрюсюеюкцдажкою. сюАдкиюми пюрюлдтрдаис вирлих бюлощмоаики пюрюлдтрдаис √title, -auther, -base, -xbase цю √target. мдаислидр-цюлютдаихи пюрюлдтрдаи, ролкдасющ хьедм шдлоитюмх, роборищюю Netscape-ис юрюовищиюкжри BGCOLOR ютриажти, цюдлютдаю < BODY > Юцдс. цюлютдаихи пюрюлдтрдаи жмцю иъздаоцмдм цдвисих.
-xbase юрбжлдмти сюшжюкдаюс ичкдею бюихеюкисъимох HRBF < BASE > Юцисхеию, ролдкищ лилцимюрд юцбикисюбюм бюмсАеюедажк юцбикс лижхихдас, роборщ шдлцдб эюмюъдршию лощдлжки:
-xbase => ⌠HTTP : // home.mcom.com /■;
зедкю вюрцоаихи йюешири бюмАикжки иьмдаю, роборщ лощдлжки tag-ис лилюрх вюрцоаихоаю.
-target юрбжлдмти сюшжюкдаюс ичкдею бюихеюкисъимох бюэжлдаих target врдили зедкю йюеширисюхеис цю юл бедрцис шдсюесдаи ворлдаи. иАикдх Netseape-ис цойжлдмтющию врдилдаис шдсюАда.
-target => ■answer_window■.
зедкю вюрцоаихи йюешири бюмиАикдаю, роборщ вюрцоаихи юл Юцис лилюрх. хьедм жлютдах мдаислидр лдт имворлющиис сюхюжрс √meta юрбжлдмтис сюшжюкдаих. дс юрбжлдмти бжкисАлоас лихихдаюс юсощиютижр люсиефд, ролдкищ шдищюес лдт имворлющиис
сюАдки / лмишемдкоаю ъзеикдас. исими ъюрлоицбимдаиюм шдлцдбмюирюц:
< META NAME = ⌠Keywords■ CONTENT = ⌠pharaon secret mummy■>
<MET VALUE =■description■ CONTENT=■copyright 1996 King Tut■ >
юр юрсдаоас юрюеихюри сюшжюкдаю HTTP_EQUIV типисюхеис. илитол рол хьедм шдбичкиюх HTTP сюхюжри цююфжстох пирцюпир header ( ) лдхоцих. любюкихюц, хж хьедм бсжрх бююбфюемох
-Refresh : header дс шдбичкиюх бююйдхох header ( ) лдхоцих:
print $q -> header (-Refresh =>' 10; URL=HTTP :www.carpicorn.com ' );
-style Юцд бюлоиздмдаю илисюхеис, рол эюжлютох йюсйюцжри вжрщкдаи хьедмс йоцши. иАикдх CASCADING stylesheets сдьщию.
хьедм шдбичкиюх лоюхюесох сАею мдаислидри HTML дкдлдмти <HEAD > сдьщиюши √head Юцих. любюкихюц, рол лоеюхюесох ишеиюхюц бюлоздмдажки < LINK > дкдлдмти сюхюжрис сдьщиюши бюлоиздмдх:
print $q -> start_HTML (-head => Link({-rel =>' next ' ,
-hef =>' HTTP: || www. carpicorn.com (s2.HTML ' }));
рол эюерхох лрюеюки HTML дкдлдмти <HEAD > сдьщиюши, бюцюдщих лилхихдадкхю люсиеи:
print $q -> start_HTML (-head => [
Link ({-rel =>' next ' ,
-href => ' HTTP : // www.carpicorn.com / s2.HTML ' }),
Link ({-rel => ' previous ' ,
-href => ' HTTP: //www.carpicorn. com / s1. HTML ' })
]
);
Java сйриптдаис бюлоздмдаю:
-script, -noScript, -onLoad, -onMouseOver, -onMouseOut цю √onUnload пюрюлдтрдаи бюлоиздмдаиюм, рол цюжлютох Netscape JavaScript-даис бюлочюАдадаи хьедмс бедрцдас. √script жмцю лижхихдацдс тдстис акойс, ролдкищ шдищюес Javascript вжмьщидаис бюмсюфыердадас. дс акойи лохюесцдаю < script > акойис шибмих HTML сюхюжрши. дс акойи лохюесдажкию сюхюжрши илисюхеис, рол лиещдх хьедмс бедрцс шюмси Дьомцдс зедкю Javascript вжмьщию хюеис юцбикюс ил сдлхАедеюшищ йи рощю лолАлюрдадки цююЮдрс stop ыикюйс, сюмюл бедрци эюитеирхдаоцдс сржкюц. CGI.PM щцикоас цююворлютос сйрипти исдхмюирюц, рол Javascript-ис арожфдрлю едр бюлорхос йоци. сюлъжАюроц фобидрхи арожфдрдаи юсдх шдлхАедеюши едр лжшюоадм съорюц.
-onLoad цю √onUnlod пюрюлдтрдаи лижхихдадм Javascript йоцис врюблдмтдаис бюлохекюс бедрцис бюАсмисюс цю цюАжреисюс. эеджкдарие дс пюрюлдтрдаи бюлоичюАдаиюм √script едкши бюмсюфыержки вжмьщидаисюхеис:
$quary = new CGI;
print $quary -> header;
$JSCRIPT =<< END;
function riddle_me_this ( ) {
var r = prompt (⌠What wolks on four legs in the morning,■+
⌠two legs in the after noun,■+
⌠and three legs in the evining?■);
response (r);
}
function responce (answer){
if(answer = = └man⌠)
alert (└Right you are!⌠);
else
alert (└Wrong! Guess again.⌠);
}
END
print quary -> start_HTML (-title =>' The Riddle of the Sphings⌠,
-script => $JSCRIPT);
бюлоиздмдх √noScript пюрюлдтри, рол бюцюсщдх HTML тдьсти, ролдкищ бюлоитюмдаю арожфдрдафд, ролкдасющ юрю юьех JavaScript (юм арожфдрдафд, ролкдафдщ JavaScript бюлорхжкию). Netscape 3.0 щмоас < SCRIPT > Юцис фобидрх ютриажтдас LANGUAGE цю SRC-ис эюхеких. жйюмюсймдки сюимтдрдсою, рюцбюм иби мдаюс бючкдех бьомцдх JavaScript йоци вюикши юм CGI сйриптши. рол бюлоиздмох дс ютриажтдаи бюцдщих HASH лилхихдадки √script пюрюлдтрих, ролдкищ шдищюес дрх юм лдт √language, -src юм √code-с:
print $q -> start_HTML (-title => ' The Riddle of the Sphinx ' ,
-script => {-language +> ' JavaScript ' ,
-scr =>' / JavaScript / sphinx. Js ' });
print $q -> (-title => ' The Riddle of the Sphinx ' ,
-script => {-language => ' PERLSCRIPT ' },
-code =>' print └⌠hello world! \ n ' ;⌠ );
аоко хеисдаю сюшжюкдаюс бючкдех эюрхох лрюеюки < SCRIPT > сдьщидаи сюхюжрши. бюцдщих сйрипт сдьщидаис сию, роборщ лилхихдакдаис люсиеи. дс сюшжюкдаюс лобщдлх цююфжстох сАеюцюсАею ъзюро вюикдаи JavaScript-ис сАеюцюсАею циюкдьтдаисюхеис. любюкихюц:
print $q -& gt; start_HTML (-title =& gt;
' The Riddle of the Sphinx ' , -script =& gt; [
{-language =& gt; ' /JavaScript 1.1 ' ,
-src = & gt; ' / JavaScript / utilities 11.Js '
}
{-language = & gt; ' JavaScript 1.2 ' ,
-scr = & gt; ' / JavaScript / utilities 12. Js '
}
{-language = & gt; ' JavaScript 28.2 ' ,
-src = & gt; ' / JavaScript / utilities 219.Js '
}
]
);
< / pre >
иАикдх
HTTP:|| home : netscape. com / eng / mozilla / 2.0 / handbook / JavaScript /
цюлютдаихи имворлющиисюхеис * JavaScript-даис шдсюАда.
чедки стики пофитижри пюрюлдтрдаисюхеис юрис:
Parameters:
цюсюхюжрдаю
╨ The author▒s e_mail adress (шдьлмис < LINK REV = ⌠MADE■ > Юцдс хж ъюрлоцбдмикию.
╨ ⌠True■ црошю хж бсжрх эюсеюх < BASE > Юцд сюхюжрши. дс цюбдАлюрдаюх бюцюизеюмох вюрцоаихи лисюлюрхдаи юасокжтжр лисюлюрхдаши, рощю цойжлдмти бюцюбюьех сАеюбюм, бюлоиздмдх сиврхАиких.
,5,6 ... мдаислидри сАею пюрюлдтрдаи, ролкдаищ хьедм бсжрх эюрхох <BODX > Юцдши. дс юрис лоАдрАдажки юцбики Netscape-с бювюрходаис цюсюслдкюц, роборищюю вдрдаи цю wallpaper милжшдаи.
HTML цойжлдмтис цюлхюердаю:
print $query -> end_HTML
дс юлхюердас HTML цойжлдмтс < / BODY > < / HTML> Юцддаис бюлотюмих.
хеихлилхихдадки URL-ис шдьлмю, ролдкищ имюрэжмдас лцболюрдоаис имворлющиюс:
$myself = $query -> self_url;
print ⌠<A HREF - $myself > I▓m talking to myself. < / A >■;
self_url ( ) цююаржмдас URL-с, ролдкищ, рощю юирэдею, Адклдордц бюлоичюАдас юл сйриптс зедкю хюеиси лцболюрдоаис имворлющиих. дс сюсюрбдакою, рощю хьедм бсжрх бюцюсщдх цойжлдмтис шибмих шибю ыжфдаис бюлоздмдаих, любрюл юр бсжрх цююмбриох ворлис лилцимюрд шимююрси.
$myself = $query -> self_url;
print ⌠< A HREF = $myself # table1> See table 1 </ A >■;
print ⌠< A HREF = $myself # table 2> See table 2 < / A >■;
print ⌠< A HREF = $myself # yourself > See for yourself < / A >■;
хж хьедм бсжрх бьомцдх лдти люрхею люсфд рющ цюаржмцю, бюлоиздмдх url ( ) лдхоци.
хьедм юбрдхед шдбичкиюх ипоеох шдсржкдажки йихАеюрис стриьоми query_string ( )-их:
$the_string = $query -> query_string;
сйриптис URL-ис лопоедаю
$full_url = $query -> url ( );
$full_url = $query -> )-full =>1); # юктдрмютижки симтюьси
$relative_url = $wuery ->url (-relative=>1);
$absolute_url = $query -> url (-absolute = 1);
$url_urth_path = $query -> url (-path_info=> 1);
$url_with_path_and_query = $query ->url (-path_info=> 1, -query=> 1);
url ( ) юаржмдас сйриптис URL-с сАеюцюсАею ворлютдаши. жюрбжлдмтоц бюлочюАдаисюс юаржмдас URL-ис сржк ворлюс люспимчкис сюАдкисю цю портис молдрис эюхеких
HTTPi || your. host.com / path / to / script. CGI
хьедм шдбичкиюх цююфжстох дс ворлюти шдлцдби сюАдкиюми юрбжлдмтдаих: -absolute
хж Юдшлюритию бюлоилжшюедас юасокжтжр URL-с, д.и.
/ path / to / script. CGI-с.
-relative
бюлоилжшюедас вюрцоаих URL-с. дс сюсюрбдакою рощю бсжрх Адклдордц бюлоичюАох хьедми сйрипти бюмсАеюедажки пюрюлдтрдаих. любюкихюц:
script. CGI
-fall
бюлоилжшюедас сржк Url-с, хихьос бюлочюАдажки зовикизос жюрбжлдмтдаоц. дс бюцювюрюес √relative цю √absolute юрбжлдмтдас.
-path (-path_info)
ювюрходас цюлютдаихи path имворлющиих URL-с. иби шдичкдаю изос йолаимирдажки √full, -absolute юм √relative юрбжлдмтдахюм. √path_info бюхеюкисъимдажкию роборщ симомили.
стюмцюржки HTML дкдлдмтдаис шдьлмю:
CGI.PM бюмсюфыерюес THML шдлойкдаис лдхоцдас хихьлис зедкю HTML 3 цю HTML 4 Юцддаисхеис. HTML шдлойкдадаи цюсюАдкдажки юриюм щюкйджки HTML дкдлдмтдаис шдлцдб цю юаржмдадм HTML тдьстис врюблдмтс, ролдкищ хьедм шдбичкиюх бюлоитюмох юм цююлжшюох роборщ хьедм бсжрх. зоедки шдлойкдаю юаржмдас HTML йоцис врюблдмтс, ролдкищ шдбичкиюх лиждрхох рюилд стриьомс, шдимюАох вюикши юм бюлоитюмох арожфдрис вюмЦюрюши. любюкихи беиэедмдас робор бюлоиздмох HTML лдхоцдаи:
$q = new CGI;
print $q -> blockquote (
⌠Many years ago on the island of■,
$q -> a ({ href=> ⌠HTTP : || crete. org / ⌠; }, ⌠Crete ⌠),
⌠there lived a minotaur named ⌠,
$q -> strong (⌠Fred■.),
),
$q -> hr;
дс шдцдбюц беючкдес шдлцдб HTML йоцс (юАюки стриьомдаи цюлютдажки юьес ъюйихАеис бюлюртиедаис лифмих):
< blockquote >
Many years ago on the island of
< a HREF = ⌠HTTP! || crete. org / ⌠; > Crete < / a > there lived
a minotaur named < strong > Fred. < / strong >
< / blockquote >
< hr >
хж хьедм хеких рол, шдлойкдадаис бюлочюАдаис симтюьси ложАдрАдадкию, хьедм шдбичкиюх шдлоитюмох исими хьедм сюАдкхю юрдши цю бюлоиздмох оаидьтфд оридмтирдажки симтюьсих (иАикдх шдлцдби сдьщию):
use CGI ▒ : standard ⌠;
print blockquote (
⌠Many years ago on the island of ⌠,
a ({ href=> ⌠HTTP : || Crete. org / ⌠; } ⌠Crete■),
⌠ there lived a minotaur named ⌠,
strong ( ⌠ Fred ⌠),
),
hr;
HTML шдлойкдадаисюхеис юрбжлдмтдаис бюхеюкисъимдаю
HTML лдхоцдас шдичкдаю Дьомцдс мжки, дрхи юм лрюеюки юрбжлдмти. хж хьедм юр бюлоиздмдах юрбжлдмтдас лииыдах лАокоц Юцдс:
print hr; # < HR >
хж хьедм бюлоиздмдах дрх юм лдт стриьомжк юрбжлдмтдас, лоАцдаю люхи йомйютдмющию Аюредфдаис мишмис эюлютдаих цю лохюесцдаю бюАсмик цю цюАжржк Юцддас шорис:
print h1 (⌠Chapter ⌠,■1■); # < H1 > Chapter 1 < H1 >
хж пиредки дкдлдмтию лилхихдакис юсощиютижри люсиеи, люшим бюсюыдадаи цю лмишемдкоадаи бюАцдаиюм HTML Юцддаис юрбжлдмтдаи:
print a ({-href => ▒fred. HTML▓, -target =>▓ √new▓},
:Open a new frame■);
< AREF = ⌠fred. HTML■, TARGET = ⌠-new■ > Open a new frame < / A >
хьедм шдбичкиюх эюъдрох ютриажтдаи цдвисдаис бюрдшдщ:
print img {src => ▒ fred. gif▓, align => ▓LEFT▓};
< IMG. ALIGN = ⌠LEFT■ SCR = ⌠ fred. gif ⌠ >
фобЦдр HTML Юцдс юрю юьес юрбжлдмти. любюкхюц, цюкюбдажки сидаи шдичкдаю изос лимишмдажки роборщ COMPACT. симтюьси юсдх шдлхАедеисюхеис юрис рюилд юрбжлдмти, ролдкищ лижхихдас бюмжсюфыердк стриьомс:
print ol ({ compact => undef }, li )▓one▓), li (▒two▓), li (▒three));
HTML шдлойкдадаис цистриажщижки хеисдаю
HTML шдлойкдадаи цистриажтжкию. хж хьедм лисщдлх люх рюилд юрбжлдмтс, ролдкищ лижхихдас рюилд сиюс, tag-и иьмдаю цистриажтжки сиис зоедки дкдлдмтис бюсъерие. любюкихюц, ьедлох лощдлжки АдрАи ьлмис цюкюбдажк сиюс:
print ul. (li ({-type =>▓disc▓}, [▒Sneezy ▒,▓Doc▓,▓Sleepy▓,▓Happy▓]);
);
дс любюкихи беючкдес шдлцдб HTML бюлотюмюс:
< UL >
< LI TYPE = ⌠disc■ > Sneezy < / LI >
< LI TYPE = ⌠disc■ > Doc < / LI >
< LI TYPE = ⌠disc■ > SLEEPY < / LI >
< LI TYPE = ⌠disc■ > Happy < / LI >
< / UL >
дс бюлоиздмдаю щАрикдаис шдсюьлмдкюц. любюкихюц:
print table ({-border => undef },
caption (▒When Shood You Eat Your Vegitables?▓),
Tz ({-align => CENTER, -valign => TOP},
[
th ([ ▒Vegetable▓,▓Breakfast▓, ▒Lunch▓,▓Dinner▓],
td ([ ▒Tomatoes▓,▓no▓,▓yes▓,▓yes▓]),
td ([ ▒Broccoli▓, ▒no▓, ▒no▓, ▒yes▓]),
td ([ ▒Onions▓, ▒yes▓, ▒yes▓, ▒yes▓])
]
)
);
HTML шдлойкдадаи цю сиис имтдрпокющию
бюмеиАикох
print blockquote (em(▒Hi▓), ▒mom!▓g);
иби юаржмдас стриьомс:
< BLOCKQUOTE > <EM> HI< ?IEM > mom!< / BLOCKQUOTE >
люсиеис дкдлдмтдас шорис юцбикис цютоедаюс люрхюес $⌠ щекюци. лиси лмишемдкоаю иьмдаю эюлютдажки дкдлдмтдас шорис. рощю бюлобюьех сжрюхдаис сию, люшим сюсжредкию щюридки стриьомис эюлютдаю сжрюхдас шорис. юлисюхеис жмцю шдещеюкох $⌠-ис лмишемдкоаю щюридки стриьомих.
{ local ( S ■) = ⌠;
print blockquote (em (▒Hi▓), ▒mom!▓ );
}
юл шдлхАедеюши S■ √ис лмишемдкоаю ищекдаю акойис шибмих, бюрдх рэдаю ибиед лмишемдкоаю.
юрюстюмцюртжки HTML шдлойкдадаи
фобидрхи HTML Юцддаи юр ищюедм стюмцюртжк милжшс сАеюцюсАею лифдфдаис бюло.
comment ( ) ичкдею HTML йолдмтюрс (<!- - comment-- >).
Perl-ис эюцблжк вжмьщидахюм йомвкиьтис бюло шдлцдби вжмьщидаи иъздаиюм цици юсодаих:
Select Tr Link Delete
цюлютдаих start_HTML ( ), end_HTML ( ), start_form ( ), end_form ( ), start_multipart_form ( ) цю ворлис шдсюесдаи зедкю Юцд спдщиюкжрию. иАикд шдсютзеиси сдьщидаи.
лсбюеси ворлдаис шдьлмю
шдемишмох, рол ворлис шдльлмдки лдхоцдаи юаржмдадм стриьомдас, ролкдаищ шищюедм Юцдс юм Юцддас, ролдкищ шдьлмис ворлис лохАоемик дкдлдмтс. хьедм Аюрх пюсжАислбдадки Юцддаис съорюц бюмкюбдаюфд. лдорд шдмишемюю, рол бюэжлдаих юыдажки лмишемдкоадаи бюлоиздмдаиюм лАокоц пиредкюц сйриптис бюлочюАдаисюс. бюлочюАдадаис шдлхАедедаши люворлирдакис лмишемдкоадаи бюлоиздмдаиюм хжмцющ исими иземдм щюридкми.
хж хьедм бсжрх рюилд едкис йомйрдтжки лмишемдкоаю хюеиси ъимю лмишемдкоаих, хьедм бюьех ори юрэдеюми:
(1) бюлоичюАдх param ( ) лдхоци лис цюсюздмдакюц.
(2) бюлоиздмдх √override (alias ~force) пюрюлдтри. дс юичжкдас бюэжлдаих юыдажк лмишемдкоаюс изос бюлоздмдажки лиси ъимю лмишемдкоаис лижАдцюеюц:
print $quary -> textfield (-name =>▓field name▓,
-default => ▒starting value▓,
-override => 1,
-size => 50,
-maxlenght => 80);
хьедм шдбичкиюх бюлоиздмох └< CLICKME >⌠ роборщ рюилд ыикюйис Юцд. дс юр бюлоиъедес рюилд орюфроемдаюс. хж хьедм бсжрх бюлорхох юетолютжри ющикдаю, бюлоичюАдх autoEscape ( ) лдхоци false лмишемдкоаих CGI оаидьтис юбдаисхюмюед:
$query -> = new CGI;
$query -> autoEscape (undef);
ISINDEX tag √ис шдьлмю
print $quary -> isindex (-action => $action);
юм
print $quary -> isindex ($action);
бюлоитюмс < ISINDEX < Юцдс. √action пюрюлдтри лижхихдас сйриптис URL-с шдюсржкос шдйихАею (query). бюэжлдаих ибжкисАлдаю шдйихАеис шдсржкдаю лилцимюрд сйриптих.
ворлис цюъздаю цю цюлхюердаю
print $quary -> startform (-method => $method,
-action => $action,
-encoding => $encoding);
< ... various form stuff ...>
print $query -> endform;
юм
print $query -> startform ($method, $action, $encoding);
< ...various form staff ... >
print $query -> endform;
startform ( ) юаржмдас < FORM > Юцдс method-их, action-их цю formencoding-их, ролдкхющ хьедм лижхихдах. бюэжлдаих беюьес method : POST action : this script encoding : apploication / x-www-form-urlencoded
endform ( ) юаржмдас цюАжреис < / FDRM > Юцдс. Startform ( )-ис endcoding method джамдаю арожфдрс робор шдвжхос ворлис сАеюцюсАею едкдаи сюмюл бюибфюемдаоцдс ворлю сдредрфд. шдсючкдадкию ори лмишемдкоаю.
application / x-www-form-urlencoded
CGI.PM йоцирдаис типис сюАдкс имюАюес $CGI :: URL_ENCODED-ши multipart / form_data
дс юрис йоцирдаис жюАкдси типи. иби сюсжредкию ворлдаисюхеис, ролкдасющ юьех цици едкдаи юм бюлифмжкию ломющдлдаис бюрцюсюьлмдкюц. иби мдаюс рхюес └file upload■ хеисдаюс Netscape 2.0 ворлдаисюхеис. CGI.PM юл йоцирдаис типис сюАдки имюАюес
&CGI ::MULTIPART-ши.
ворлдаи, ролкдаищ издмдадм йоцирдаис юл типс юр юриюм иокюц цюсюлжшюедадки CGI сйриптдаисюхеис, хж юр бюлоиздмдадм CGI.PM-с юм сАею аиакиохдйюс, ролдкищ бюлифмжкию люх цюсюлжшюедакюц. хюесдаюцоаис лифмих startform ( ) лдхоци издмдас бюэжлдаих йоцирдаис чедк ворлюс. хж хьедм бсжрх бюлоиздмох йоцирдаис жюАкдси ворлю бюэжлдаих, хьедм шдбичкиюх бюлоичюАох start_multipart_form ( ).
Java сйриптдаис бюлочюАдаю: Java сйриптдаши √name цю onSubmit пюрюлдтрдаи бюлоиздмдаиюм. √name пюрюлдтри ючкдес ворлюс сюАдкс цю иби бюлоиздмдаю Java script вжмьщидаис лидр лис ицдмтивищирдаисю цю люмипжкирдаисюхеис. √onSubmit лижхихдас Java script вжмьщиюс, рол иби жмцю изос бюлохекики, сюмюл ворлю бюцюдщдлоцдс сдредрс. хьедм шдбичкиюх бюлоиздмох дс шдсючкдакоаю ворлис шимююрсис шдрсюлоълдакюц сисржкдфд. хж хьедм юылоюэдмх рюилд шдщцолюс, хьедм шдбичкиюх ююлоьлдцох сюбюмбюшо зжхи юм цюювиьсирох рюилд хеихомед. хьедм шдбчкиюх юлоюбцох бюцющдлю false-ис цюаржмдаих юл вжмьщиицюм. эеджкдарие Java сйриптдаис вжмьщидаи бюмсюфыержки юриюм HTML сюхюжрис
< SCRIPT > акойши цю √onSubmit лижхихдас дрх-дрхс юл вжмьщидаис бюлочюАдаицюм. иАикдх start_HTML ( ).
тдьстис едкис шдьлмю
print $query -> textfield (-name =>▓field_name▓,
-defult =>▓starting value▓,
-size => 50,
-maxlength
юм
print $query -> textfield (▒field_nme▓, ▒starting value▓, 50, 80);
textfield ( ) цююаржмдас тдьстис шдсютюм едкс.
пюрюлдтрдаи
пиредки пюрюлдтрию едкис сюАдки (-name).
∙ лдорд юрюсюеюкцдажко пюрюлдтрию бюэжлдаих мюбжкисАлдаи сюстюрто лмишемдкоаю едкис шимююрсисюхеис (-default).
∙ лдсюлд юрюсюеюкцдажко пюрюлдтрию едкис лощжкоаю силаокодаши (-size).
∙ лдохАд юрюсюеюкцдажко пюрюлдтрию едкши силаокодаис люьсилюкжри рюоцдмоаю (-maxlength).
зедкю юл лдхоцдаих йомйрдтжки едкис имищиюкифющию Ацдаю сйриптис аоко бюлочюАдаисюс ъимю шимююрсих. рощю ворлю бюмАорщидкдажкию тдьстжри едкис лмишемдкоаю шдичкдаю лиеиыох шдлцдбмюирюц:
$value = $query -> param (▒foo▓);
хж хьедм бсжрх юыюцбимох иби лиси сюъзиси лмишемдкоаицюм, люс шдлцдб рющ сйрипти бюлочюАдажки изо дрхАдк, хьедм шдбичкиюх бююйдхох иби юсд:
$query -> param (▒foo▓, ⌠I▓m taking over this value!■);
сиюАкд 2.15 хж хьедм юр бсжрх юиыох едки лиси ъимю лмишемдкоаицюм, хьедм шдбичкиюх юичжкох лилцимюрд лмишемдкоаис лиыдаю √override (alias-force) пюрюлдтрис бюлоздмдаих:
print $query-> textfield (-name =>▓field_name▓,
-default =>▓starting value▓,
-override =>1,
-size => 50 ,
-maxize => 80);
Java сйриптдаис бюлоздмдаю: хьедм шдбичкиюх бюлоиздмох √onChange, -onFocus, -onBlur, -onHouseOver, -onMokseOut цю √onselect пюрюлдтрдаи, рол цюеюрдбистрох Java сйриптис Ацоликдаюхю цюлюлжшюедакдаи. on Change цюлюлжшюедадки бюлоичюАдаю, рощю лолАлюрдадки щекис тдьстжри едкис шимююрсс. onFouse цю onBlur бюлоичюАдаиюм, рощю эюсюлютдадки ъдртики лочрюоас тдьстжри едкис шибмих цю бюрдх. onSelect бюлоиздмдаю, рощю лолАлюрдадки щекис ломишмжк тдьстс.
тдьстис цици едкис шдьлмю
print $query -> textarea (-name => ▒foo▓,
-default =>▓ starting value▓,
-rows => 10,
-coliemens => 50);
юм
print $query -> textarea (▒foo▓,▓starting value▓, 10, 50);
textarea ( ) Дбюес textfield-с, любрюл иби сюшжюкдаюс бючкдех лижхихох едкис сюъзиси лмишемдкоаю, ролдкищ шдичкдаю лоихАоецдс лрюеюк стриьомс.
Java сйриптирдаю: -onChange, -onFocus, -onBlur, -onMouseOver, -onMouseOut цю onSelect пюрюлдтрдаи бюлоиздмдаиюм. иАикдх textfield ( ).
пюспортис едкис шдьлмю
print $query ->password_field (-name => ▒secret▓,
-value =>▓starting value■,
-size => 50,
-maxlength => 80);
юм
print $ query ->password_field (▒secret▓, ▒starting, value▓, 50, 80);
пюспортис едкис шимююрси еюрсйекюедаих бюлоитюмдаю еда бедрцфд.
Java сйриптдаис бюлоздмдаю: ибиед пюрюлдтрдаи бюлоиздмдаю, рющ ъимю едкисюхеис. иАикдх textfield ( ).
вюикис эютеирхеис едкис шдьмлю
print $query -> fillefield (-name =>▓uploaded_file▓,
-defoult => ▒starting value▓,
-size => 50,
-maxlength => 80);
юм
print $query -> filefield (▒uploaded file▓, ▒starting value▓, 50, 80);
filefield ( ) юаржмдас эютеирхжки вюикис едкс Netscape 2.0 арожфдрдаисюхеис. илисюхеис, рол бюлоеиздмох сржкюц лиси жпирютдсоадаи жмцю бюлоиздмох ворлисюхеис лрюеюкмюъикиюми йоцирдаис сьдлю. хьедм шдбичкиюх бююйдхох иби startform ( )-ис бюлочюАдаих йоцирдаис типих $CGI :: MULTIPART юм юАюки start_multipart ( ) лдхоцис бюлочюАдаих.
пюрюлдтрдаи
∙ пиредки пюрюлдтрию едкис сюАдки (-name).
∙ лдорд юрюсюеюкцдажко пюрюлдтрию сюъзиси лмишемдкоаю едкис шимююрсисюхеис жмцю изос бюлоздмдажки, роборщ вюикис сюАдки бюэжлдаих (-default).
∙ лдсюлд юрюсюеюкцдажко пюрюлдтрию едкис лощжкоаю силаокодаши (-size).
∙ лдохАд юрюсюеюкцдажко пюрюлдтрию едкис люьсилюкжри сибрчд силаокодаши (-maxlength).
рощю ворлю рдюкифдажкию, хьедм шдбичкиюх лииыох шдтюмики вюикис сюАдки parm ( ) лдхоцис бюлочюАдаих.
$filename = $query -> param (▒unluaded_file▓);
Netscape 2.0-ши цюаржмдажки вюикис сюАдки юрис сржки койюкжри вюикис сюАдки лолАлюрдакис шорджк люмьюмюфд. хж шорджки лолАлюрдакис люмьюмюю Unix-и, люшим вюикис сюАдки юйлюзовикдас Unix-ис шдхюмАлдадас:
/ path / to / the / file
MS.DOS-ши WINDOWS-сю цю OS/2 люмьюмдаисюхеис бедьмдаю:
C:\ parth \ TO \ THE \ FILE.MSW
Macintosh-ис люмьюмюфд йи
HD 40 : Desktop Folder : Sort Through : Reminders
цюаржмдажки вюикис сюАдки юрис юбрдхед вюикис сюАдкжри. хьедм шдбичкиюх ъюийихАох юл вюикис шимююрси Perl вюикис ъюйихАеис стюмцюртжки бюлочюАдаих:
While (< $filename >) {
print;
}
open (OUTFILE, ⌠>> / usr / local / web / users / feed back■);
while ($bytesread = read ($filename, $baffer, 1024)) {
print OUTFILE $buffer;
}
рощю вюики эюитеирхдаю, арожфдри юбфюемис рюилд имворлющиюс сюхюжрдаис ворлютши. дс имворлющию эеджкдарие шдищюес шимююрсис MINE типс. лолюеюкши арожфдрлю шдичкдаю бююбфюемос жвро лдти имворлющию (роборищюю хюриыи цю лощжкоаю). юл имворлющиис лисюыдаюц бюлоичюАдх uploadInfo ( ). иби юаржмдас юсощиютижри люсиеис лилхихдадкс, ролдкищ шдищюес цойжлдмтис сюхюжрдас.
$filename = $quary -> param (▒uploaded_file▓);
$type = $query -> uploadinfo ($filename) -> {▒Content-Type▓};
unless ($type eq ▒tex / HTML▓) {
die ⌠ HTML FILES ONLY!■;
}
хж хьедм издмдах йолпижтдрс, ролдкищ юрэдес ⌠text■ цю ⌠benary■ ломющдлдаис типдас, жмцю изох цюрължмдажки роцис цю робор бюлоиздмох исими. ъимююылцдб шдлхАедеюши, шдичкдаю юылоэмцдс, рол ороаихи вюики цюлюАимЦдажкию вюикис эютеирхеисюхеис.
Java сйриптдаис бюлоздмдаю: -onChange, -onBlur, -onFocuis, -onMouseOver √on MouseOut цю √onSelect пюрюлдтрдаи бюлоиздмдаю. иАикдх textfield ( ).
стдйжри (POPUR) лдмижс шдьлмю
print $quary -> popur_menu (▒menu_name▓,
[▒eenie▓, ▒meenie▓, ▒minib▓],
▒meenie▓);
юм
% labels = (▒eenie▓=> ▒your first choice▓,
▒meenie▓ => ▒your second choice▓,
▒meenie▓=> ▒your third choice▓);
print $quary -> popup_menu (▒menu_name▓,
[▒eenie▓, ▒meenie▓, ▒minie▓]
▒meenie▓,\ % labels);
юм (сюАдкиюми пюрюлдтрис стики)
print $quary-> popun_menu (-name => ▒menu_name▓,
-values => [▒eenie▓, ▒meenie▓, ▒minie▓],
-default => ▒meenie▓,
-label => \ % labels);
popur_menu ( ) ьлмис лдмижс.
1. сюеюкцдажко юрбжлдмтию лдмижс сюАдки (-name).
2. лдорд сюеюкцдажко юрбжлдмтию люсиеис лилхихдадки, ролдкищ шдищюес лдмижс дкдлдмтдаис сиюс. хьедм шдбичкиюх бюцюсщдх лдхоцс юмомилжри люсиеи, роборщ мюэедмдаию любюкихши юм лолхихдадки сюАдкиюм люсиефд, роборищюю ⌠\ @ foo■.
3. лдсюлд юрюсюеюкцдажко пюрюлдтрию бюэжлдаих юыдажки лдмижс дкдлдмти. хж юрюю лихихдажки, люшим бюэжлдаих юиыдаю пиредки дкдлдмти. ъимю юрэдеис лмишемдкоадаи иьмдаю шдмюрэжмдажки йихАедаис бюсъерие.
4. лдохАд юрюсюеюкцдажко пюрюлдтри (-labels). бюхеюкисъимдажкию люххеис, еисющ сжрс лдмижс лмишемдкоадаис ломишемю.
рощю ворлю шдсржкцдаю стдйжр лдмижши юрэджки лмишемдкоаю шдичкдаю лиеиыох
$popur_menu_value = $query -> param (▒menu_name▓);-хи
Java сйриптдаис бюлоздмдаю: popur_menu ( ) издмдас Ацоликдадаис шдлцдб цюллжшюедакдас: -onChange, -onFocus, -onMouseOver,-onMouseOut цю onBlur. иАикдх textfield ( ) сдьщию.
лщжрюеи сиис шдьлмю
print $wuary -> scrolling_list (▒ list_name▓,
[▒eenie▓, ▒meenie▓, ▒minie▓, ▒moe▓],
[▒eenie▓, ▒moe▓], 5, ▒true▓);
юм
print $quary √ scrolling_list (-name => ▒list_name▓,
-values => [▒eenie▓, ▒meenie▓, ▒minie▓, ▒moe▓],
-default => [▒eenie▓, ▒moe▓],
-size > 5,
-multiple => ▒true▓,
-labels => \ % labels);
scrolling_list Дьлмис лщжрюе сиюс.
пюрюлдтрдаи:
пиредки цю лдорд юрбжлдмтдаи юриюм сиис сюАдки цю лмишемдкоадаи.
лдсюлд юрюсюеюкцдажко юрбжлдмтию сиис лилхихдадки, ролдкищ шдищюес бюэжлдаих юрэджк лдмижс дкдлдмтдас. рощю бюлотоедажкию юм юрюю лихихдажки, люшим бюэжлдаих юрщдрхи дкдлдмти юр юирэдею.
лдохАд юрюсюеюкцдажко юрбжлдмтию сиюши дкдлдмтдаис рюоцдмоаю.
лдАжхд юрюсюеюкцдажко юрбжлдмти хж цюздмдажкию true-фд, люшим шдсючкдадкию лдмижши рюлоцдмилд дкдлдмтис юрэдею. ъимююылцдб шдлхАедеюши, лАокоц дрхи дкдлдмтис юрэдею шдичкдаю.
лддьесд юрюсюеюкцдажко юрбжлдмтию лилхихдадки юсощиютижр люсиефд, ролдкищ шдищюес дкдлдмтдаис Юцддас.
рощю ворлю шдсржкцдаю, лдмижс юрэджки дкдлдмтдаи шдичкдаю лиеиыох:
@ selected = $wuary -> param (▒list_name▓);
Java сйриптдаис бюлоздмдаю: scrolling_list /) жшедас шдлцдб Ацоликдаюхю цюлюлжшюедакдас: -onChange, onMouseOver, onFocus, -onMouseOut цю √onBlur. иАикдх textfield ( ) жвро цдтюкжри юыъдрисюхеис.
цюйюеширдажки жЦрдаис Цбжвис шдьлмю
print $query-> checkbox_group (-name =>▓group_name▓,
-values => [▒eenie▒, ▒meenie▒, ▒minie▒, ▒moe▓],
-default =>[▒eenie▓, ▒moe▓],
-linebreak => ▒true▓,
-labels => \ % labels);
юм
print $query -> checkbox_group (▒group_name▓,
[▒eenie▓, ▒meenie▓, ▒minie▓, ▒moe▓],
[▒eenie▓, ▒moe▓], ▒true▓, \ % labels);
HTML 3 √хюм хюесдаюци арожфдрдаисюхеис лАокоц:
print $query -> checkbox_group (-name =>▓group_name▓,
-values =>[▒eenie▓, ▒meenie▓, ▒mine▓, ▒moe▓],
-rows = 2, -columns => 2);
checkbox_group ( ) Дьлмис цюйюеширдажки шдсюрэдеи жЦрдаис сиюс, ролкдаищ дрхилдордсхюм цюйюеширдажкию сюдрхо сюАдких.
пюрюлдтрдаи:
пиредки цю лдорд пюрюлдтрдаи юриюм шдсюлоълдадки жЦрдаис сюАдки цю лмишемдкоадаи. лдорд юрбжлдмти жмцю изос лилхихдадки люсиеи. дс лмишемдкоадаи бюлоиздмдаиюм лолАлюрдакисюхеис ъюсюйихА Юцддаюц, ролкдаищ шдлцдб бюцюдщдлю сйриптс йихАеюрис стриьомши. лдсюлд юрюсюеюкцдажко юрбжлдтию лилхихдадки сиюфд, ролдкищ шдищюес лмишемдкоадас, ролкдаищ жмцю изос юрэджки бюэжлдаих. хж дс юрбжлдмти бюлотоедажкию, люшим юрювдри юр юирэдею бюэжлдаих. лдохАд юрюсюеюкцдажко юрбжлдмтию стриьомис бюъзедтю, ролкис Юдшлюрит лмишемдкоаис лищдлю мишмюес стриьомис бюъзедтис лохюесдаюс шдсюлоълдадк жЦрдас шорис исд, рол шдсюлоълдадки жЦрдаи бюлоитюмдаю, роборщ едртикюйжри сию, ъимююылцдб шдлхАедеюши иьмдаю стриьомис бюсъерие. юрюсюеюкцдажко лдАжхд юрбжлдмтию юсощиютижр люсиефд лилхихдадки, ролдкищ бюлоитюмдаю роборщ Юцддаи лмишемдкоадаисюхеис. HTML хюесдаюци арожфдри издмдас юрюсюеюкцдажко юрбжлдмтс √rows цю √columns, ролкдаищ бюцююьщдедм шдсюрэде жЦрюхю сиюс щАрикюц. рол лиеиыох стриьомисю цю седтис сюхюжрдаи цюаржмдажк щАрикши, хьедм шдбичкиюх бюлоиздмох √row headers цю √colheaders пюрюлдтрдаи. ориедми ъюрлоюцбдмдм лилхихдакдас сюхюжрдаис люсиефд. рощю ворлю шдсржкцдаю, зедкю юрэджки жЦрдаи иьмдаю цюаржмдажки, роборщ щию сюАдких ┌groip_name▓. юрэджки жЦрдаис лмишемдкоадаи шдичкдаю лиеиыох
@turned_0n =$query -> param (▒group_name▓); -их.
checkbox_group ( ) √их цюаржмдажки лмишемдкоаю юрис дкдлдмтдаис люсиеи. хьедм шдбичкиюх бюлоиздмох исими щАрикдаис, сидаис юм сАею рюилдс шибмих:
@h = $query -> checkbox_group (-name => ▒group_name▓,
-values => @values);
&use_in_creative _way ((@h);
Java сйриптдаис бюлоздмдаю: checkbox_group ( ) щмоас лАокоц √onClik пюрюлдтрс. дс лижхихдас Java skript-ис йоци юм вжмьщиис бюлочюАдаю изос шдсржкдажки зоедкхеис, рощю лолАлюрдадки цююЮдрс Цбжвис дрх-дрх ыикюйс. хьедм шдбичкиюх ипоеох цюЮдрики ыикюйи └this■ щекюцис сюшжюкдаих.
шдсюрэдеи жЦрис шдьлмю
print $query -> checlbox (-name => ▒checkbox_name▓,
-checked => ▒checked▓,
-value => ▒ON▓,
-label => ▒CLICK ME▓);
print $query -> checkbox (▒checkbox_name▓, ▒checked▓, ▒ON▓, ▒CLICK ME▓);
checkbox ( ) бюлоиздмдаю юсюрэдеи жЦрис шдсюьлмдкюц.
пюрюлдтрдаи:
пиредки пюрюлдтрию сюАдки.
лдорд юрюсюеюкцдажко пюрюлдтри беиэедмдас, рол жЦрю жмцю изос юрэджки бюэжлдаих. симомилию √select цю √on.
лдсюлд юрюсюеюкцдажко пюрюлдтри беиэедмдас юрэджки жЦрис лмишемдкоаюс. рощю юрю беюьес ситзею ⌠on■ ибжкисАлдаю.
лдохАд юрюсюеюкцдажко пюрюлдтрию жЦрюсхюм лидрхдажки Юцд. хж юрю беюьес дс пюрюлдтри, люшим юсюрэдеи жЦрис сюАдки бюлоиздмдаю. юсюрэдеи жЦрис лмишемдкоаю лииыдаю
$turned_on = $query -> param (▒checkbox_name▓);-их.
Java сйриптдаис бюлоздмдаю: checkbox ( ) щмоас лАокоц √on Click пюрюлдтрс.
рюцио ыикюйдаис Цбжвис шдьлмю
print $query -> radio_group (-name +> ▒group_name▓,
-values => [▒einie▓, ▒ meenie▓, ▒menie▓],
-default => ▒meenie▓,
-lnebreak => ▒true▓,
-labels => \ % labels);
юм
print $query -> radio_group (▒group_name▓, [▒eenie▓, ▒meenie▓, ▒minie▓],
▒meenie▓, ▒true▓, \ % labels);
HTML 3 √хюм хюесдаюци арожфдрдаисюхеис лАокоц:
print $query √ radio_group (-name=>▓group_name▓, -values =>
[▒eenie▓, ▒meenie▓, ▒menie▓, ▒moe▓], rows =2, -columns => 2);
radio_group ( ) ьлмис кобийжрюц цюйюширдажк ыикюйдас (дрхи ыикюйис эюрхею иъедес сАею ыикюйдаис бюлорхеюс).
пюрюлдтрдаи:
пиредки сюеюкцдажко юрбжлдмтию Цбжвис сюАдки (-name). лдорд юрбжлдмти (-values) юрис лмишемдкоаюхю сию рюцио ыикюйдаисюхеис. лмишемдкоадаи цю Юцддаи дрхицюибиедю, ролкдаищ бюлоэмцдаю бюлотюмик бедрцфд. бюцдщих лдорд юрбжлдмтюц лилхихдадкхю люсиеи юм бюлоиздмдх юмомилжри люсиеи юм лижхихдх сюАдкиюми люсиеи роборищюю └\ @ foo■.
лдсюлд юрюсюеюкцдажко пюрюлдтрию (-default) бюэжлдаих эюрхжки ыикюйис сюАдки. хж юрюю лощдлжки пиредки иьмдаю юрэджки бюэжлдаих. хьедм шдбичкиюх лижхихох юрюрсдажки ыикюйис сюАдки ⌠-⌠, рющ жфржмедкзовс, рол юрщдрхи ыикюйи юр иьмдаю юрэджки бюэжлдаих.
лдохАд юрюсюеюкцдажко пюрюлдтрию (-labels) лилхихдадки юсощиютижр люсиефд, ролдкищ юрис лмишемдкоаюхю Юцддаи бюлотюмисюс. хж юрюю лощдлжки, люшим хеих лмишемдкоадаи бюлоитюмдаиюм.
HTML √хюм хюесдаюц арожфдрдаши шдичкдаю беьомцдс юрюсюеюкцдажко пюрюлдтрдаи √rows -columns. исими ьлмиюм щАрикс, ролдкищ шдищюес рюцио ыикюйдас. хьедм хж лижхихдах седтдаис рюоцдмоаюс, сюЮиро стриьомдаис рюоцдмоаюс radio_group бюлохекис хеихом.
рол эюрхох стриьомдаисю цю седтдаис сюхюжрдаи цюаржмдажк щАрикши, хьедм шдбичкиюх бюлоиздмох √rowheader цю √colheader пюрюлдтрдаи. ориедми издмдадм лилхихдакдас люсиефд.
рощю ворлю бюлоитюмдаю, юрэджки рюцио ыикюйи хьедм шдичкдаю лииыох:
$which_radio-button = $query ->param (▒group_name▓); -их
radio_group ( ) √ис цюаржмдажки лмишемдкоаюю ыикюйдаис люсиеи. хьедм шдбичкиюх цюиЮирох цю бюлоиздмох исими щАрикдас, сидаис шибмих юм сАею сюАдких:
@h = $query -> radio_group (-name => ▒ group_name▓, -values => @values;
&use_in_creative_way (@h);
цюцюстжрдаю (SUBMIT) ыикюйис шдьлмю
print $query -> submit (-name => ▒button_name▓,
-value => ▒value▓);
юм
print $query _ submit (▒button_name▓, ▒value▓);
submit ( ) ьлмис йихАеюрис цюлоълдаис ыикюйс. зоедк ворлюс жмцю Дьомцдс дрхи юсдхи ыикюйи.
пюрюлдтрдаи:
пиредки юрюсюеюкцдажко юрбжлдмтию (-name), хьедм шдбичкиюх ыикюйс лисщдх сюАдкдаи, хж хьедм бюьех сАеюцюсАею цюлоълдаис ыикюйдаи цю бсжрх бюмюсАеюох исими дрхилдорисюбюм.
лдорд юрюсюеюкцдажко юрбжлдмтию (-value). иби ючкдес ыикюйс лмишемдкоаюс, ролдкищ бюцюдщдлю сйриптс йихАеюрис стриьомши. хьедм шдбчкиюх бююрйеиох, ролдки ыикюйи изо цюЮдрики хж бюлоиздмдах сАеюцюсАею лмишемдкоадас бюмсАеюедажки ыикюйдаисюхеис:
$which_one $query -> param (▒button_name▓_;
Java сйриптдаис бюлоздмдаю: radio_button ( ) сщмоас √onClick пюрюлдтрс.
юыцбдмики ыикюйис шдьлмю
print $query- reset
reset ( ) ьлмис ⌠reset■ ыикюйс. шдемишмох, рол иби юыюцбдмс ворлюс ил сюАих, роборищ сйриптис аоко бюлочюАдаисюс изо.
бюэжлдаис ыикюйис шдьлмю
print $query ->default (▒button_label)
default ( ) ьлмис ыикюйс, ролдкищ, рощю бюлоичюАдаю, иъедес ворлис юыцбдмюс бюэжлдаис лмишемдкоадаих.
вюржки едкис шдьлмю
print $query -> hidden (-name =>▓hidden_name▓,
-default => [value 1▓, ▒value 2▓...);
hidden ( ) ьлмис тдьстжр едкс, ролдксющ едр цюимюАюес лолАлюрдадки. иби сюсюрбдакою щекюци имворлющиис лцболюрдоаис бюцсющдлюц сйриптис дрхи бюлочюАдаицюм лдордфд.
пюрюлдтрдаи:
пиредки сюеюкцдажко юрбжлдмтию едкис сюАдки (-nme).
лдорд сюеюкцдажко юрбжлдмтию лиси лмишемдкоаю (-default). хьедм шдбичкиюх бюлоиздмох дрхи лмишемдкоаю юм сиюфд лихихдаю.
едкис лмишемдкоаис лиыдаю шдичкдаю шдлцдбмюирюц
$hidden_value = $query ->param (▒hidden_name▓);
хж хьедм бимцюх шдщеюкох едкис лмишемдкоаю, бюлоиздмдх:
$query -> param (▒hidden_name▓, ▒new▓, ▒values▓, ▒here▓);
сдрюхфд цюсюъйюпжмдадки ыикюйис шдьлмю
print $query -> image_button (-name => ▒button_name▓,
-src => ▒/ source / URL▓,
-align => ▒MIDDLE▓);
юм
print $query -> image_button (▒button_name▒, ▒/ source / URL▒, ▒MIDDLE▒);
image button ( ) ьлмис цюсюъйюпжмдадк сжрюхс. рощю люсфд цюеюъйюпжмдах хьедм сйриптс цюжаржмцдаю ⌠button_name. x ⌠ цю
⌠ button_name.y ⌠, сюцющ ⌠button_name■ юрис едкис сюАдки, ролдкищ хьедм цююрьеих сжрюхс.
Java сйриптдаис бюлоздмдаю: cmage_button ( ) сщмоас √0nClick пюрюлдтрс.
пюрюлдтрдаи:
пиредки сюеюкцдажко юрбжлдмтию едкис сюАдки.
лдорд сюеюкцдажко юрбжлдмтию URL
лдсюлд сюеюкцдажко юрбжлдмтию бюсъордаис типи цю шдичкдаю изос TOP, BOTTOM цю MIDDLE.
ыикюйис лмишемдкоаис лиыдаю шдичкдаю $x - $query -> param (▒button_name.x▓);
$y = $query -> param (▒button_name.y▓);
Javascript лоьлдцдаис ыикюйис шдьлмю
print $query -> button (-name => ▒button_name▓,
-value => ▒user_visible_label▓,
-onClick => ⌠do_some thing ( ) ⌠);
юм
print $query - > button (▒button_name▓, ⌠do_some thing ( ) ⌠);
button ( ) ьлмис ыикюйс, ролдкищ хюесдаюцию Netscape 2.0-ис Java сйриптхюм. рощю иби цюЮдрикию Java сйриптис йоци лихихдажкию √onChick пюрюлдтрфд цю иьмдаю бюлохекики. сАею арожфдрдаисюхеис шдичкдаю иби юр лжшюоацдс.
Netscape прощдсдаис имцийютордаи
Netscape арожфдрдаи 1.1 цю жвро люыюки едрсидаи ихеюкисъимдадм прощдсдаис имцийютордаис бюлоздмдаюс арожфдрдахюм сиюмсис црос. CGI.PM юьес рюлоцдмилд лдхоци прощдсордаис имцийютордаис лАюрцюсюЮдрюц.
прощдсис имцийютори юрис сюАдки = лмишемдкоаю ъзеики, ролдкищ Дбюес CGI йихАеюрис сюАдкиюм пюрюлдтрдас. CGI сйриптдаи Дьлмиюм дрх юм лдт прощдсдаис имцийютордас цю юбфюемиюм люх арожфдрдафд HTTP сюхюжрши. арожфдри ихеюкисъимдас прощдсдаис имцийютордаис сиюс, ролдкищ дйжхемис йомйрдтжк еда сдредрс жаржмдас люх CGI сйриптс сдюмсис црос. бюрцю сюеюкцдажко сюАдки = лмишемдкоаю ъзеикисю, зоедк прощдсис имцийюторс шдичкдаю Дьомцдс рюлоцдмилд юрюсюеюкцдажко ютриажтдаи:
1. еюцис бюсекю.
дс юрис цро / хюриыи сюАис стриьоми (CGM ворлютши), ролдкищ жэедмдас прощдсис имцийюторис еюцис бюсекюс. cookie шдимюАдаю цю цюжаржмцдаю хьедмс сйриптс сюмюл дс еюцю юр бюею, рощю лолАлюрдадки бюлоцис Netscape-цюм цю Адклдордц жшедас люс. хж еюцю юрюю лихихдажки, cooke рэдаю юьтижри, сюмюл лолАлюрдадки бюлоею Netscape-цюм.
2. This юрд юрис мюъикоариеи юм сржки, ролкисхеисющ cookie еюрбисию. арожфдри цюжаржмдас cookie-с мдаислидр люспимчдкс, ролдкищ дхюмюцдаю юм мюъикоарие юрис сюАдкс. любюкихюц, хж хьедм лижхихдах юрис сюАдкюц ⌠.carpicorn. com ⌠-с, люшим Netscape цюжаржмдас cookie-с web сдредрдас, ролкдаищ бюшедажки юриюм шдлцдб люмьюмдаицюм ролдкилдфд: ⌠ www. carpicorn. com ⌠, ⌠www2 . carpicorn. com ⌠, ⌠ feckless. carpicorn. com ⌠ цю ю.ш.. юрис сюАдкдаи жмцю шдищюецмдм зедкюфд лщирд ор ъдртикс, рол юеищикох люыюк цомддахюм цюлхАедею, роборищюю ⌠.edu■. хж юсд юрюю лихихдажки, люшим арожфдри цюжаржмдас cookie-с лАокоц ил сдредрдас, сюицюмющ cookie лоеицю.
3. рюилд бфю, хж хьедм лижхихдх cookie-с лфю ютриажти . арожфдри юлоълдас люс хьедми сйриптис URL-хюм, сюмюл cookie-с цююаржмдацдс. любюкихюц, хж хьедм лижхихдх ⌠ / CGI_bin ⌠ бфю, люшим cookie цюжаржмцдаю мдаислидрс шдлцдб сйриптдас: ⌠ / CGI_bin / tally.pl ⌠, ⌠ / CGI_bin / order.pl ⌠ цю ⌠/ CGI_bin /codtomer.pl ⌠, любрюл юр цюжаржмцдаю └ / CGI_private / site adm.pl ⌠-с. бюэжлдаих бфю жцрис ⌠ / ⌠-с
4. ⌠sequre■. хж ⌠secure■ ютриажти лощдлжкию, люшим cookie бюдбфюемдаю лАокоц хьедм сйриптс, хж CGI-с лохАоемю Ацдаю secure юрАфд, роборищюю SSL. Netscape cookies имтдрвдиси юрис cookie ( ) лдхоци:
$cookie = $query -> cookie (-name => ▒sessinID▓, -value => ▒xyzzy▓,
-expres => ▒+1h▓, -path =>▓ / CGI_bin / database▓,
-domain => ▒. carpicorn. org▓, -secure => 1);
print $query -> header (-cookie => ▒$cookie▓);
cookie ( ) ьлмис юАюк cookie-с. лиси пюрюлдтрдаию:
-name
cookie- с сюАдки сюеюкцдажкою. иби шдичкдаю изос мдаислидри стриьоми. хжлщю Netscape фыжцюес cookie-с сюАдкдас. исими юр жмцю шдищюецдс Аюредфис мишюмс. CGI.PM-ши лиси ющикдаю шдичкдаю escape мишмих.
-value
cookie-с лмишемдкоаюю. иби шдичкдаю изос сйюкюри, люсиефд лихихдаю, юм юсощиютижр люсиефд лихихдаю. любюкихюц, хьедм шдбичкиюх шдимюАох лхдки юсощиютижри люсиеи cookie-ши шдлцдбмюирюц:
$cookie = $query -> cookie (-name => ▒family information▓,
-value => \ % childrens_ages);
-path
дс юрис юрюсюеюкцдажко мюъикоариеи бфю, ролкисхеисющ cookie еюрбю.
-domain
дс юрис юрюсюеюкцдажко мюъикоариеи юрд, ролкисхеисющ cookie еюрбю.
-expires
дс юрис юрюсюеюкцдажко еюцю cookie-схеис. ворлюти юыъдрикию header ( ) лдхоцис сдьщиюши.
-secure
хж цюздмдажкию tru-дфд, люшим cookie жмцю изос эюцблжки HTTP сюхюжрши стриьомис шибмих, ролдксющ юаржмдас header ( ) лдхоци:
print $query -> header (-cookie => ▒$my_cookie▓);
рол шдьлмюх лрюеюки cookie, лидщих header ( ) лдхоцс люсиефд лихихдаю:
$cookie 1 = 4query -> cookie (-name => ▒riddle_name▓,
-value => ⌠The Sphynx▓s Question ⌠);
$cookie 2 = $query -> cookie (-name => ▒ansvers▓▓,
-value => \ % ansvers);
print $query -> header (-cookie => [$coocie 1, cookie 2]);
рол лиеиыох рюилд cookie, лоихАоедх иби сюАдких cookie ( ) лдхоцис бюлочюАдаих -value пюрюлдтрис бюрдшд:
use CGI;
$query = NEW CGI;
% ansvers = $query -> cookie (-name =>▓ ansvers ▒);
cookie цю сюАдкхю юрд (namespace) юриюм сАеюцюсАею. хж хьедм бюьех пюрюлдтри ┌ansvers▓ цю cookie ▒ansvers▓, лмишемдкоадаи лиыдажки param(▒ansvers▓) цю cookie (▒ansvers▓) юриюм дрхилдорисюбюм цюложйицдадкми. хжлщю шдичкдаю CGI пюрюлдтри лилюрхо cookie-сюйдм цю пириьих:
$c = $q -> cookie (-name = > answers▓, value =>[ param (▒answers▓)]);
иАикдх cookie.CGI любюкихи, илис сюикжстрющиоц хж робор бюлоиздмох cookie двдьтжрюц.
шдмишемю: юрсдаоас фобидрхи юрюцойжлдмтирдадки шдфыжцею cookie-с бюлоздмдаис лилюрх. дс дАдаю cookie-с рюоцдмоаюс цю сибрчдс.
Netscape-с врдилдрдахюм лжшюоаю
шдсючкдадкию CGI.PM сйриптлю бюлоитюмос имворлющию арожфдрдаис пюмдкдафд цю вюмЦрдаши Netscape-с врдилдрдаис лдьюмифлис бюлоздмдаих.
юрсдаоас врдилдрдаис бюлоздмдаис сюли сюшжюкдаю:
1. <frameset> цойжлдмтис шдьлмю
HTTP сюхюжрис бюлотюмис шдлцдб илис мющекюц, рол шдьлмюх стюмцюртжки HTML цойжлдмти start_HTML ( ) лдхоцис бюлочюАдаих, шдьлдмих < FRAMESET > цойжлдмти, ролдкищ бюмсюфыерюес врдилдрс бедрцфд. лижхихдх хьедм сйриптс SCR-и зоедки врдилдрисюхеис. юр юрсдаоас рюилд спдщивийжри сюшжюкдаю
< FRAIMSET > сдьщидаис шдсюьлмдкюц CGI.PM-ши, любрюл HTML-ис цюъдрю чюкиюм иокию. иАикдх врдилдаис цойжлдмтющию Nestcape-ис Home page √ши:
HTTP: // home. netscape. com / assist / net_sites / frames. HTML
2. HTTP сюхюжрши цойжлдмтис цюмишмжкдаис юцбикис бюмсюфыерю.
хьедм шдбичкиюх бюлоиздмох √target пюрюлдтри header ( ) лдхоцши:
print $q -> header (-target => ▒Results Winword▓);
дс джамдаю Netscape-с эютеирхос хьедми сйриптис бюлосюсекдки └Results Window⌠ сюАдкиюм врдилши. хж врдили юсдхи сюАдких юр юрсдаоас, люшим Netscape шдьлмис юАюк вюмЦюрюс цю эютеирхюес хьедми сйриптих шдьлмик цойжлдмтс люсши. юрсдаоас лхдки риби любижри сюАдкдаисю, ролкдаищ хьедм шдбичкиюх бюлоиздмох √target-исюхеис.
3. цюмишмжкдаис юцбикис лихихдаю < FORM > Юцдши. хьедм шдбичкиюх лижхихох врдили, ролдкищ жмцю эюитеирхос < FORM > Юцдши. дс бюлоиздмдаю юсд:
print $q -> start form (-target = > ▒Results Winword▓);
рощю хьедми сйрипти Адклдордц бюлоичюАдаю ворлис лидр, лиси бюлосюсекдки эюитеирхдаю Results Winword■ врдилши. хж юсдхи врдили юр юрсдаоас юАюки вюмЦюрю шдиьлмдаю. ⌠ frameset. CGI ⌠ сйрипти, ролдкищ лохюесдажкию любюкихдаис цирдьториюши беиэедмдас бедрцдаис шдьлмис дрх-дрх АдрАс, ролдкшищ шдсюесдаи ворлю цю пюсжАдаи лохюесдажки юриюм дрхилдорис бедрцих лзов врдилдаши.
йюсйюцжри стикис вжрщкдаис шдьлмис шдфыжцжки лАюрцюЮдрю
CGI.PM-ши бюхеюкисъимдажкию йюсйюцжри стикис вжрщкдаис (css) шдфыжцжки сюАис лАюрцюЮдрю HTML 3-хеис. рол эюцбюх стикжри вжрщдки хьедмс цойжлдмтши, бюлоиздмдх Start_HTML ( ) лдхоци √style пюрюлдтрих. юл пюрюлдтрис лмишемдкоаю шдичкдаю изос сйюкюри. юсдх шдлхАедеюши иби эюицблдаю < STILE > сдьщиюши, юм шдичкдаю изос Адш люсиефд лихихдаю. жйюмюсймдк шдлхАедеюши хьедм жмцю бюлоиздмох Адш люсиеи дрхи юм лдти √src-хи юм √code-их. √scr лижхихдас URL-с стикжри вжрщдки сюц шдичкдаю изос. √code лижхихдас сйюкюри лмишемдкоаю сюц шдичкдаю изос эюцблжки
< STILE > сдьщиюши. стикис бюмсюфыердадаи √code-ши бюцюивюрдаиюм √code-ши исдед, роборщ √named бюцюивюрдаю √src-ши. юьдцюм бюлолцимюрдоас сюАдки йюсйюцирдаю. хьедм шдбичкиюх лижхихох стикжри вжрщкис типи юрюсюеюкцдажко √type пюрюлдтрис цюлютдаих Адшфд, ролдкищ бюмсюфыержкию √style-их. хж юрюю лихихдажки, люшим бюэжлдаих стики иьмдаю ┌text / css! рол лижхихох стики хьедми цойжлдмтис тюмши, цюжлютдх √class пюрюлдтри ролдкилд HTML дкдлдмтс:
print h1 ({-class => ▒Fancy ▒}, ▒Welcome to the Party ▒); юм бюмсюфыердх стикдаи √style пюрюлдтрих:
print span ({-style =>▒Color : red;▒},
h1 (▒Welcome to Hell▓);
хьедм шдбичкиюх, юбрдхед, бюлоиздмох юАюки span ( ) дкдлдмти, рол бюлоиздмох рюилд стики тдьстис сдьщиюфд:
print span ({-style = > ▒Color : red;▓}
h1 (▒Welcome to Hell▓),
⌠Where did that hand basket get to?■);
шдемишмох, рол хьедм жмцю шдлоитюмох ⌠ : HTML3 ⌠ бюмсюфыердадаи, рол шдбдчкох span ( ) лдхоцис бюлоздмдаю. иАикдх CSS спдщивийющидаи
HTTP : || www . w3 . org / pub / WWW / TR / WD-css-1. HTML лисюлюрхих. ьедлох лощдлжкию CSS-ис бюлоздмдаис любюкихи:
use CGI qw / : standard : HTML3 /;
# юь лощдлжкию бедрцши эюцблжки стикиюми вжрщдки
$new Style = << END;
< ! - -
p. Tip { margin √right : 50 pt;
margin-left : 50 pt;
color : red; }
p. Alert { font-size : 30pt;
font-family : sans-serif;
color : red; }
- - >
END
print header ( );
print start_HTML (-title = > ┌CGI with Style▒,
-style = > { -src = >▒HTTP : || www. carpicorn . com / style /
st1 . CSS▒,
-code = > $new Style} );
print h1(┌CGI with Style▒),
p ( {-class = > ┌Tip▒},
⌠Bether read the cascading style sheet aspect before playing with this ! ⌠),
Span ( {-style = > ┌color : magenta▒},
⌠Look mom, no hands ! ⌠,
p ( ), ⌠Whoo wee ! ⌠);
print en HTML;
бюлюрхею
хж хьедм бюжшедах сйриптс арчюмдаих юм Perl-ис бюллюрхедких хьедм шдбичкиюх бюютюрох сйрипти бюсюыдаи ситзедаис сиих юм шдтюмицюм (хьедм юр жмцю ивиьрох илюфд, рол хьедм сйриптс шджчкию ъюийихАос бюрдлос щекюцдаицюм). хьедм шдбичкиюх бюютюрох бюсюыдаи ситзедаи шдлцдбмюирюц:
your_skript . pl keyword1 keyword2 keyword3
юм
your_skript . pl keyword1 + keyword2 + keyword3
юм
your_script .pl name1 = value1 name2 = value2
юм
your_script . pl name1 = value1 & name2 = value2
юм йицде юАюк стриьомфд бюцюсеких зоедки пюрюлдтрисюхеис стюмцюртжки шдтюмицюм.
бюлюрхеис црос хьедм шдбичкиюх бюлоиздмох арЮзюкдаи юм \ силаоко фобидрхи юйрчюкжки силаокосюхеис хьедмс пюрюлдтри = лмишемдкоаю ъзеикши:
your_script . pl ⌠name1 = I am a long value■ ▒ ⌠name2 = two \ words ⌠
зедкю Name / value ъзеикдаис бюлотюмю
dump ( ) лдхоци ьлмис стриьомс, ролдкищ шдцбдаю йихАеюрис сюАдки / лмишемдкоаю ъзеикисюбюм, ролдкищ йюрбюц ворлютирдажкию, роборщ сиюши эюцблжки сию. дс сюсюрбдакою бюлюрхеис црос:
print $query - > dump
лиеиыдах шдлцдбс:
< UL >
< LI > name 1
< UL >
< LI > value 1
< LI > value 2
< / UL >
< LI > name 2
< UL >
< LI > value 1
< / UL >
< / UL >
хьедм шдбичкиюх бюцюсщдх ▒true▓ лмишемдкоаю dump ( )-с илисюхеис, рол цюадЮцох шдцдбдаи роборщ сржки тдсти, ролдкищ эюцблжкию <PRE > сдьщиюши.
роборщ шдлойкдаю, 1.56 едрсиюши, хьедм шдбичкиюх лхдки CGI оаидьтис имтдрпокирдаю рюилд стриьомши цю иби шдищекдаю лшедмидри HTML бюлотюмих роборщ мюэедмдаию фдлох:
$query = new CGI;
print ⌠< H2 > Current Values < / h2 > $query \ n ⌠ ;
бюрдлос щекюцдаис лотюмю
фобидрхи зедкюфд жвро сюсюрбдако бюрдлос щекюцдаи шдичкдаю шдлотюмик иьмюс юл имтдрвдисши. дсдми юриюм шдлцдби лдхоцдаи:
accept ( )
юаржмдас MIME типис сиюс, ролдксющ шорджки арожфдри ихеюкисъимдас. хж хьедм бюлоиздмдах юл лдхоцс юрбжлдмтих, ролдкищ шддсютзеисдаю MIME типс, роборщ дс лощдлжкию
& query ->accept (▒ text / HTML ▒ ), иби цююаржмдас лочрюе ъдртикиюм лмишемдкоаюс, ролдкищ шддсютзеисдаю арожфдрис юрэдеюмс юл типисюхеис цюъздажки 0.0 √цюм 1.0-лцд. Glob типдаи (д.и. text / *) арожфдрис бюхеюкисъимдажк сиюши цюлжшюецдаю съорюц.
raw_cookie ( )
юаржмдас HTTP_cookie щекюцс. прощдсис имцийютордас cookie-дас юьех спдщиюкжри ворлюти цю юл лдхоцис бюлочюАдаю юаржмдас цюжлжшюедадк ворлюс. иАикдх cookie ( ).
жпюрюлдтрдаоц бюлочюАдажки raw_cookie ( ) юаржмдас шдвжхжк прощдсис имцийюторис cookie стржьтжрюс. хьедм шдбичкиюх цюзох иби щюкйджк прощдсис имцийюторис cookie-аюц ⌠ ; ⌠-их. прощдсис имцийюторис cookie≈с сюАдких бюлочюАдажки юаржмдас ж-escape-о cookie-с ворлюс. сюАдкдаис лисюыдаюц хьедм шдбичкиюх бюлоиздмох cookie ( ) лдхоци юм бюлоиздмох raw_fetch ( ) лдхоци CGI : : Cookie лоцжкицюм.
user_agent ( )
юаржмдас HTTP_USER_AGENT щекюцс. хж хьедм бюлоиздмдах юрбжлдмтс, иби шддщцдаю лощдлжки милжши цююлхАеиос люс:
$query -> user_agent (netscape)
path_info ( )
юаржмдас бфис цюлютдаих имворлющиюс сйриптис URL-цюм. д.и. / CGI-bin / your_script / additional / stuff цююаржмдас
$query -> path_info ( )-ши ⌠additional / stuff ■-с.
шдмишемю: Microsoft-ис имтдрмдт имворлющижки сдредри юр ичкдею бфис цюлютдаих имворлющиюс.
patch_translated ( )
иби юаржмдас бфис цюлютдаих имворлющиюс бюцюзеюмикс вифийжр бфюши, д. и. ⌠/ usr / local etc / HTTPd / htdocs / additional / stuft ⌠
unix опдрютижки систдлисюхеис. Mikrosoft IIS юр ичкдею юсдх имворлющиюс.
remote_host ( )
юаржмдас шорджки люспимчкис сюАдкс юм IP лисюлюрхс.
script_name ( ) юаржмдас сйриптис сюАдкс роборщ мюъикоарие URL-s хеихлихихдаюци сйриптисюхеис.
referer ( )
юаржмдас бедрцис URL-с, ролдксющ лилоиАикюецю арожфдри хьедми сйриптис лотюмюлцд. юр бюлоиздмдаю юрщдрх арожфдрфд.
auth_type ( )
юаржмдас мдаюрхею / шдлоълдаис лдхоци бюлоиздмдаю сйриптдаисюхеис хж юрю.
srever_name ( )
юаржмдас сдредрис сюАдкс, эеджкдарис дс юрис люспимчдки йолпижтдрис сюАдки.
vitrual_host ( )
рощю бюлоиздмдаю еиртжюкжри люспимчкдаи, люшим юаржмдас люспимчкис сюАдкс, ролдкхюм цюйюеширдаюсющ щцикоацю арожфдри.
server_softvare ( )
юаржмдас сдредрис пробрюлжки жфржмедкзовис сюАдкс цю едрсиис молдрс.
remote_user ( )
юаржмдас мдаюрхею (шдлоълдаис сюАдкс, ролдкищ бюлоиздмдаю лолАлюрдакис шдсюлоълдакюц, хж дс сйрипти цющжкию.
user_name ( )
щцикоас лоипоеос шорджки лолАлюрдакис сюАдки сАеюцюсАею тдьмийис бюлоздмдаих. дс бюлоиздмдаю чедк арожфдрши роборищюю Mosaic. Netscape юр ичкдею лоАдрАдажкюц лолАлюрдакис сюАдкс.
request_method ( )
юаржмдас хьедм сйриптхюм лилюрхеис лдхоцс. эеджкдарие дсюю ▒POST▓, ▒GET▓, юм ▒HEAD▓.
NPH сйриптдаис бюлоздмдаю
NPH юм ▒ no-parsed-header ▓ сйриптдаи бедрцс южекиюм сдредрс цю бюцюсщдлдм HTTP сюхюжрс пирцюпир арожфдрс. юлюс юьес жпирютдсоаю, рощю еиыдах HTTP бювюрходадас, ролкдаищ юр юриюм бюхеюкисъимдажки хьедми сдредрис лидр, роборищюю server push цю PICS сюхюжрдаи.
сдредрдаи издмдадм сАеюцюсАею шдхюмАлдадас CGI сйриптдаис юысюмишмюеюц, роборщ NPH-даи. лрюеюки UNIX сдредрдаи юлоълдадм сйриптис сюАдки иъздаю хж юрю прдвиьсих ⌠ nph- ⌠
CGI.PM ихеюкисъимдас NPH сйриптдас спдщиюкжр NPH рдяилих. рощю юл рдяилшию CGI.PM бюлоитюмс южщикдадк дьстрю сюхюжрис имворлющиюс header ( ) цю redirect ( ) лдхоцдаис бюлоздмдаисюс. CGI.PM юетолютжрюц юылоюэдмс, рощю сйрипти бюшедажкию IIS-ши цю хеихом бюцюею юл рдяилши. юсд, рол хьедм юр бЮирцдаюх юл рдяилис цюздмдаю, хжлщю юлих юрювдри цюшюецдаю. юрсдаоас сАеюцюсАею АдрАдаи CGI.PM-ис NPH рюяилши бюцюсюзеюмюц: use имстржьщиюши цюжлютдх ⌠-nph ⌠ пробрюлю шдлосютюми силаокодаис сиюс:
use CGI qw ( :standard √nph )
nph ( ) лдхоцис бюлочюАдаих:
бюлоичюАдх nph ( ) лдхоци рюилд пюрюлдтрих пробрюлис мдаислидр ъдртикши CGI.PM бюлоздмдаис шдлцдб.
CGI -> nph (1)
-nph пюрюлдтрис бюлоздмдаих header ( ) цю redirect ( ) имстржьщидаши:
print $q -> header (-nph => 1);
Server Push
CGI.PM ихеюкисъимдас сюл люртие вжмьщиюс ил типис лрюеюкмюъикиюми ойжлдмтдаис шдсюьлмдкюц, ролкдаищ рдюкифющиюс жйдхдадм server pugh-с. дс вжмьщидаи шдьлмикию Ed Jordan-ис лидр √ лисюлюрхи < ed@fidalgo.net >. рол шдлоитюмох исими сюЮирою ⌠ : push■-ис цюздмдаю. бирэдех, юбрдхед, цюсеюх сйрипти NPH рдяилши цю лиюмиЮох $l-с дрхиюми, рол юищикох ажвдрифющиис проакдлдаи.ьедлох
лозеюмикию люртиеи сйриптдаи, ролдкищ беиэедмдас server push-:
# ! / usr / local / bin / perl
use CGI qw / : push √nph /;
$| = 1;
print miltypart_init (~ boundary => ▒ - - - - - here we go ! ▒);
while (1) {
print multipart_start (~ type => `texi / plain ▒),
⌠The current time is ⌠, scalar (localtime), ⌠ in ⌠,
multiport_end;
sleep 1: }
дс сйрипти имищиюкифющиюс жйдхдас server push-с multipart_unit ( ) √ис бюлочюАдаих. люс шдлоюьес жсюсржко щийки, ролдкшищ иби иъздас юАюк лрюеюкъкиюм сдьщиюс multipart_start ( )-ис бюлочюАдаих, адЮцюес юцбикоарие црос цю юлхюердас лрюеюкъкиюм сдьщиюс, шдлцдб иби лиичимдас цю исде иъздас хюеицюм.
multipart_init ( ) multipart_init (-boundary => $boundary);
имищиюкифющиюс жйдхдас лрюеюкъкиюм систдлюс. √boundary юрбжлдмти жхихдас MINE сюфыерис стриьомс, ролдкищ бюлоиздмдаю цойжлдмтис мюъикдаис бюлосюзовюц дрхилдорисюбюм. хж юрюю лихихдажки CGI.PM хеихом юирэдес лифюмшдъомик сюфыеюрс.
multypart_start (-type => $type)
иъздас лрюеюкъкиюми цойжлдмтис юАюк мюъикс лихихдажки MINE типис бюлоздмдаих. хж юрюю лихихдажки ибжкисАлдаю text / HTML.
multypart_end ( ) юлхюердас мюъикс.
лолАлюрдакдалю, ролдкхющ юимтдрдсдах server puch-ис бюлоздмдаю, жмцю иАиком CGI : : push лоцжки.
лолсюАжрдаис шдлотдедаис юйрчюкеис ющикдаю
CGI.PM-ши потдмщиюкжри проакдлюю, рол юрюю шдфыжцжки бюсбфюеми ворлис лощжкоаю. Дюйдрс шджчкию шджтиос хьедмс сюитс илих, рол бююбфюемос лхдки post рюилд щекюцши, ролдкищ бюифрцдаю лощжкоаюши, сюмюл юр бюлоею лдАсидрдаис бюрдх. дс бюлоиъедес систдлис юеюрижк бюлорхеюс. дс юрис лолсюАжрдаис шдлотдеис юйрчюкеис дрх-дрхи ворлю. сАею шдсючкдадки ворлюю шорджклю лолАлюрдадклю юичжкос CGI.PM лииыос эюсютеирхюц цици вюики цю шдимюАос цродаих цирдьториюши ил шдлхАедеюшищ йи, рощю хьедми сйрипти юр дкоцдаю рюилд вюикис эютеирхеюс. CGI.PM шджчкию юлоюбцос дс вюики юетолютжрюц, рощю эюитеирхдаю иби, любрюл люмюлцд шорджк лолАлюрдадкс шджчкию бюцююесос цисйис лдАсидрдаю цю юлих шджьлмюс проакдлдаи сАею пробрюлдас. юлис ющикдаис сюжйдхдсо АдрАию шдфыжцжки лдАсидрдаис лощжкоаю, люмьюмжри цро цю цисйис лощжкоаю, ролдкхю бюлоздмдаю шддчкдаю CGI сйриптс. фобидрх Web сдредрдас хеихом юьех юлис ющикдаис сюшжюкдадаи. сАею шдлхАедеюши хьедм шдбичкиюх бюлоиздмох shell limit юм ulimit арчюмдадаи, рол цююъдсох CGI рдсжрсдаис бюлоздмдаис люьсилюкжри сюфыеюри.
CGI.PM-с юбрдхед юьес сюйжхюри цющею лолсюАжрдаис шдлотдеис юйрчюкеисюбюм, любрюл хьедм жмцю ъимюсъюр бюююьтижрох иби. юлисюхеис юрсдаоас ори бкоаюкжри щекюци сюАдкхю юрдши:
$ CGI : : POST_MAX
юл щекюцис лмишемдкоаю юрис люьсилюкжри аюитдаис рюоцдмоаю, ролдкищ шдичкдаю бюлоздмдажк иьмдс POST-ис црос. CGI.PM роборщ йи юылоюэдмс, рол POST юрис жвро цици, люшимед бюлоитюмс шдщцолис шдтзоаимдаюс цю цююлхюердас лжшюоаюс. лиси бюлоздмдаю шдичкдаю роборщ эеджкдариеи юсдед лрюеюкъкиюми POST-ис црос. эеджкдарие юл щекюцс юмиЮдадм дрх лдбюаюитс.
$ CGI : : DISABLF_UPLOADS
хж люс юьес юрюмжкоеюми лмишемдкоаю, люшим сржкюц юийрчюкдаю вюикис эютеирхедаи. сАею шдсюесдаи ворлдаи илжшюедадм эеджкдариеюц. хьедм шдбичкиюх бюлоиздмох дс щекюцдаи шдлцдби ори АдрАицюм дрх-дрхис сюшжюкдаих:
1. сйриптицюм сйриптфд бюцюсекисюс:
цююздмдх дс щекюци сйриптис хюеши ⌠use⌠ имстржьщиис шдлцдб.
use CGI qw / : standard / ;
use CGI : : Carp `fatals To Browser`;
$ CGI : : POST_MAX = 1024 * 100;
$ CGI : : DISABLE_UPLOADS = 1;
2. дрхцрожкюц зедкю сйриптисюхеис:
бюАсдмих CGI.PM, ипоедх $POST_MAX цю $DISABLE_UPLOADS цю цююздмдх исими сюсжредк лмишемдкоадафд. хьедм ипоеих люх вюикис хюеши ьедпробрюлюши сюАдких initialize_globals ( ). роборщ йи иьмдаю лщцдкоаю бююбфюемом POST жвро цици еицрд $ POST_MAX-ис лмишемдкоаюю, иби бюлоиъедес вютюкжр шдщцолюс. хьедм шдбичкиюх бюлоиздмох CGI : : Carp, рол бюлоитюмох арожфдрис вюмЦюрюши шдщцолис шдтзоаимдаю, роборщ дс фдлохю любюкихшию мюэедмдаи. сАею шдлхАедеюши шорджки лолАлюрдадки цюимюАюес лАокоц ⌠ Internal Server■ шдщцолис шдтзоаимдаюс. иАикдх Garp сюАдклчыеюмдко.
CGI-LIB.PL-хюм хюесдаюцоаю
юрсдаоас ⌠Read Parse■ ьедпробрюлю илисюхеис, рол иокюц шдлоеитюмох пробрюлдаи CGI-lib.pl-цюм:
use CGI; CGI : : ReadParse print ⌠The value of the antique is $in {antique} . \ n ⌠; CGI.PM √ ис ReadParse ( ) ьедпробрюлю шдьлмис щекюцс сюАдких % in, ролдксющ шдбичкиюх лилюрхох, рол лоипоеох йихАеюрис щекюцдаи. ReadPars-ис лсбюесюц хьедм шдбичкиюх шдьлмюх хьедми сюйжхюри щекюци. ReadParse √ис ишеиюхюц бюлоздмдаюци хеисдадаи, роборищюю @in цю $in-ис шдьлмю шдичкдаю юр изос бюхеюкисъимдажки. рощю бюлоиздмдах ReadParse-с, шдлцдб шдбичкиюх лииыох хеих йихАеюрис оаидьти шдлцдбмюирюц:
$ = $in {CGI};
print $q ->textfield (-name =>`wow`,
-value => `does this really work ?`);
дс сюшжюкдаюс лобщдлх бюжшеюх CGI.PM-ис жвро сюимтдрдсо хеисдадаи хьедми чедки сйриптдаис Адклдордц бюцюъдрис бюрдшд.
люртие ворлюфд цювжчмдажки сйриптис
сржки любюкихи
# ! / usr / local / bin /perl
use CGI;
,
,
,
,
,
,
,
шдщцолдаи
дс лоцжки бюифюрцю вюрхоц цю ломокихжрюц. юьдцюм бюлолцимюрд иби юйдхдас адер рюлдс, роборищюю: URL-даис цюлжшюедаю, CGI шдтюмис бюрэдею, HTML-ис цюъдрю цю ю. ш., рющ юрис юбрдхед бюйдхдажки LWP лоцжкши. иби жмцю изос юлобцдажки CGI : : * лоцжкдаис сюсюрбдакоц, любрюл роборыющ лд люимщ еюбрчдкда люхфд лжшюоаюс. шдемишмох, рол дс йоци цюлюАимЦдажкию илисюхеис, рол юеищикох шдщцолис зюкаи шдтзоаимдадаи, рощю пробрюлдаи бюшедажкию
-w бюцюлрхедких.
иАикдх юбрдхед
Carp, URL, Request, MiniSvr, Base, Form, Apache, Switch, Push, Fast.
ьюрхжк цю имбкисжр тдрлимхю мжсАю
Юцд tag
сйрипти script
ыжфю anchor
ворлю form
йихАеюри query
ворлюти format
люспимчдки host
сюАдкиюми юрбжлдмти name argumebt
вюрцоаихи лисюлюрхи relative address
юасокжтжри лисюлюрхи absolute address
бфю patch
шдлойкдадаи shortcats
арожфдри broser
вюмЦюрю window
лдмиж menu
сюАдхю юрд namespace
йомйютдмющию concatenation
Аюредфис мишюми space
юсощиютижри люсиеи assotiative array
бюсюыдаи key
бюсюыдаи ситзею keyword
цдвиси -
сию list
щАрики table
шдсюесдаи ворлю query form
бюэжлдаю default
ыикюйи batton
юетолютжри ющикдаю autoescape
оаидьти object
едки field
ороаихи bynary
сйриптдаис бюлоздмдаю scripting
тдьстис едки textfield
пюрюлдтри parameter
цюлюлжшюедадки handler
лолАлюрдадки user
тдьстис цици едки textarea
пюспортис едки password field
еда бедрци web page
вюики file
эютеирхею load
йоцирдаю coding
шорджки лолАлюрдадки remote user
вюикис сюАдкжри sile handle
стдйжри лдмиж popup menu
лщжрюеи сию scrolling list
цюйюеширдажки юсюрэдеи жЦрдаи related checkbooxes
лилхихдадки pointer
лихихдаю reference
стриьомис бюъзедтю line break
юсюрэдеи жЦрю standalone checkbox
рюцио ыикюйи radio button
цюцюстжрдаю submit
юыцбдмис ыикюйи reset button
бюэжлдаис ыикюйи default button
вюржки едки hidden field
сжрюхфд цюсюъйюпжмдадки
ыикюйи clickable image button
бюсъордаю align
прощдсис имцийютори cookie
Цюцоьржки сибмюки magic kookie
бримеиэис лдрициюмицюм
юхекики цроихи фомдаи GMT
врдили frame
бюлюрхею debugging
бюллюрхедки debuger
рюилдс лзисидри лцболюрдоаис
юлоадЮцею(бюлотюмю) dumping
бюрдло environment
щекюци variable
пробрюлжки жфржмедкзовю software
тдьмийжри жфржмедкзовю handware
сюити site
шдщцолдаи mgs
ломющдлхю аюфю data base
юрбжлдмтис сюАдких бюлочюАдаю call by name
цимюлижрюц шдьлмики бедрцдаи dynamic pages
шдлхАедеихи ломющдли hash
бюлочюАдаис шдхюмАлдадаи call conventions
эюшдмдажки вжмьщидаи built-in functions
оаидьтфд оридмтирдажки стики object oriented style
пюрюлдтрдаис сиих бюлочюАдаю parameters call by
list
сюАдкиюми пюрюлдтри named parameter
юрАи pipe
стжлюрхю ъибми gests book
жтикитю (цюлАлюрд пробрюлю) utility
лилхихдадки трюмскюторисюхеис pragmas
юетолютжри эютеирхею auto load
цирдьторию (йютюкоби) directory
сюхюжрис едки header field
proxy √ сдредри proxy √ server
юцбикис лихихдаю имтдрмдтши URL
йкюси class
Юишйюри Gateway