Upload
dai
View
75
Download
1
Embed Size (px)
DESCRIPTION
Perl. مهشید رهنما دانشکده مهندسی کامپیوتر دانشگاه صنعتی شریف پاییز 84. عناوین بخش ها. بخش اول : معرفی Perl بخش دوم : آشنایی با برنامه نویسی Perl و واسط درگاه مشترک( CGI ). معرفی Perl. معرفی. Perl کوته نوشتی از : P ractical E xtraction and R eport L anguage - PowerPoint PPT Presentation
Citation preview
11
PerlPerl
رهنما رهنما مهشید مهشیدکامپیوتر مهندسی کامپیوتر دانشکده مهندسی دانشکده
شریف صنعتی شریف دانشگاه صنعتی دانشگاه8484پاییز پاییز
22
ها بخش ها عناوین بخش عناوین
: معرفی اول معرفی : بخش اول PerlPerlبخش
: نویسی برنامه با آشنایی دوم نویسی : بخش برنامه با آشنایی دوم و و PerlPerlبخش
( مشترک درگاه )واسط مشترک درگاه ((CGICGIواسط
33
PerlPerlمعرفی معرفی
44
معرفیمعرفیPerlPerl : از نوشتی از :کوته نوشتی کوته
• Practical Extraction and Report Language
• ) Pathologically Eclectic Rubbish Lister یا (
PerlPerl آقای آقای توسط که Larry Wallتوسط است شده ساخته! کامپیوتر متخصص نه اند بوده شناس زبان
زبان کد به شبیه آن زبان کد کد به شبیه آن ..استاست CC کد
55
PerlPerlمحاسن محاسن
کامل حال عین در و ساده زبان کامل یک حال عین در و ساده زبان یک
باال سطح های زبان بین باال زبانی سطح های زبان بین زبان ( ( PascalPascal, , CC))زبانی زبان و ونویسی برنامه نویسی های برنامه ((awkawk ووshsh, , sedsed ) ) ShellShellهای
awk = Aho, Weinberger, Kernighan sed = Stream Editor
66
). ادامه ) .(محاسن ادامه ) محاسن های های نبشته که ((shell scriptsshell scripts ) )ها ها ShellShellنبشته کوچک های فایل در @ که معموال کوچک های فایل در @ معموال
ولی شوند می نوشته کنند می اشاره یکدیگر ولی به شوند می نوشته کنند می اشاره یکدیگر چنین چنین به به PerlPerlبه. است یافته دست فایل یک قالب در .توانایی است یافته دست فایل یک قالب در توانایی
گزارشی زبان گزارشی یک زبان ((reporting Languagereporting Language))یک
اوایل اوایل در به PerlPerl،، 19901990 در متنی ازاسناد بسیاری سریع تبدیل به باعث متنی ازاسناد بسیاری سریع تبدیل باعث
.HTMLHTMLفرمت فرمت کرد ایفا را مهمی نقش وب درگسترش و .شد کرد ایفا را مهمی نقش وب درگسترش و شد
77
PerlPerlمعایبمعایب شود می محسوب شلوغی شود زبان می محسوب شلوغی ..زبان
را گوناگونی های ساختار مشخص عمل یک سازی پیاده را برای گوناگونی های ساختار مشخص عمل یک سازی پیاده برای (. مثال برای کند می .) پیشنهاد مثال برای کند می جمله 55پیشنهاد یک سازی پیاده برای جمله راه یک سازی پیاده برای راه
). دارد .(شرطی دارد شرطی
. ست خوانا .نا ست خوانا نا
زبان به شده نوشته های برنامه توان زبان نمی به شده نوشته های برنامه توان شکل PerlPerlنمی به شکل را به راتوان( opaque binaryopaque binary)) امنامن اجراییاجرایی نمی دلیل همین به و آورد توان( در نمی دلیل همین به و آورد در
کننده تولید برای آن جوانب همه که کرد ایجاد تجاری کننده محصولی تولید برای آن جوانب همه که کرد ایجاد تجاری محصولی . باشد . محفوظ باشد محفوظ
88
PerlPerlخصوصیات خصوصیات PerlPerl در زبان ترین در متداول زبان ترین نویسی متداول نویسی برنامه ) برنامه مشترک درگاه ) واسط مشترک درگاه واسط
CGICGI))
کند می عمل قالب دو کند در می عمل قالب دو ::درo System AdministrationSystem Administrationo Internet ProgrammingInternet Programming
PerlPerl وب پویای صفحات برای نویسی برنامه وب زبان پویای صفحات برای نویسی برنامه زبان
PerlPerl( نویسی نبشته زبان نویسی )یک نبشته زبان ((Scripting languageScripting languageیک
برای نویسان برنامه از بسیاری برای انتخاب نویسان برنامه از بسیاری انتخابمتوسط ( ( ApplicationsApplications))کاربردهایکاربردهای تا کوچک سایز متوسط با تا کوچک سایز با
مفسر مبنای بر مفسر زبانی مبنای بر ((interpreted baseinterpreted base))زبانی
99
به به دسترسی PerlPerlدسترسی
اما کند می عمل مختلف های چارچوب روی اما بر کند می عمل مختلف های چارچوب روی براز آن از منشاء آن . UnixUnixمنشاء .است است
هم همPerlPerl. هست همه اختیار در مجانی آن کد هم .و هست همه اختیار در مجانی آن کد هم و
o http://www.perl.comhttp://www.perl.como http://www.activestate.comhttp://www.activestate.com
با کار برای نسخه با بهترین کار برای نسخه است است Perl 5.8.0Perl 5.8.0نسخه نسخه PerlPerlبهتریندر در که .July 2002July 2002که شد .منتشر شد منتشر
1010
PerlPerl برنامه زبان ترین برنامه متداول زبان ترین متداولگاه در واسط گاه نویسی در واسط نویسی
((CGICGI))مشترکمشترک
1111
مشترک درگاه واسط روش مشترک مقایسه درگاه واسط روش مقایسهنویسی نبشته های زبان دیگر نویسی با نبشته های زبان دیگر با
1212
در نویسی برنامه با در آشنایی نویسی برنامه با آشناییPerlPerl
1313
مقدمهمقدمه زبان به های زبان برنامه به های پسوند PerlPerl برنامه با پسوند باید با های plpl..باید برنامه های و برنامه و
CGICGI زبان به زبان که به با PerlPerlکه باید شوند می با نوشته باید شوند می نوشته.cgicgi..پسوند پسوند شوند .ذخیره شوند ذخیره
PerlPerl جمله از متن ویرایشگر هر در جمله را از متن ویرایشگر هر در یا NotePadNotePadرا یا و وTextPadTextPad. نوشت توان .می نوشت توان می
1414
اجرای اجرای نحوه PerlPerlنحوه( تصویری )نماد تصویری نوع ((IconIconنماد از های نوع فایل از های PLPLفایل
اجرای اجرای برای در PerlPerlبرای باید ، دستگاه روی بر آن نصب از در بعد باید ، دستگاه روی بر آن نصب از Command Commandبعدwindowwindow: کرد عمل زیر صورت :به کرد عمل زیر صورت به
D:\perl5\test\MPListrings\ perl filename.plD:\perl5\test\MPListrings\ perl filename.pl
اجرای اجرای برای در CGICGIبرای را آنها باید شده نوشته در های را آنها باید شده نوشته نام folderfolderهای با نام ای با -cgi-cgiایbinbin سمت در زیر آدرس طریق از و نموده ذخیره کارگزار سمت سمت در در زیر آدرس طریق از و نموده ذخیره کارگزار سمت در
: کرد اجرا : کاربر کرد اجرا کاربرhttp://www.servername.com/cgi-bin/filename.cgihttp://www.servername.com/cgi-bin/filename.cgi
1515
ابتدایی ابتدایی اشنایی اشنایی
# می مشخص نماد با زبان این در اضافی می # توضیحات مشخص نماد با زبان این در اضافی توضیحات . نیز جمالت پایان در برنامه این اول خط مانند . شوند نیز جمالت پایان در برنامه این اول خط مانند شوند
. ; ;نماد نماد است .ضروری است ضروری
STDINSTDIN شکل به که دهد می نشان را ورودی خط شکل یک به که دهد می نشان را ورودی خط یکهر شامل و شود می استفاده زبان این در هر استاندارد شامل و شود می استفاده زبان این در استاندارد
سازید وارد است ممکن ورود هنگام در که متغیری سازید نوع وارد است ممکن ورود هنگام در که متغیری نوع. باشد .می باشد می
1616
ها ها متغیر متغیر : نیست متغیر نوع بیان به احتیاجی متغیر تعریف برای زبان این : در نیست متغیر نوع بیان به احتیاجی متغیر تعریف برای زبان این در
$$foo foo = = 1;1;
$name $name = "= "FredFred"";;
$pi $pi = = 3.1415923.141592; ; می چاپ خروجی در و کرده ئریافت را ورودی که ساده ای می برنامه چاپ خروجی در و کرده ئریافت را ورودی که ساده ای برنامه
کنند:کنند:
11: : ##!/!/usrusr//locallocal//binbin//perlperl
22: : $inputline $inputline = = <STDIN>;<STDIN>;
33: : printprint) ) $inputline $inputline ((; ;
1717
ها ها متغیر متغیر
را متغیر تعریف نادرست های صورت از تعدادی زیر را در متغیر تعریف نادرست های صورت از تعدادی زیر در: بینید :می بینید می
variable # the $ character is missing variable # the $ character is missing $ # there must be at least one letter in the name $ # there must be at least one letter in the name $47x # second character must be a letter $47x # second character must be a letter $_var # again, the second character must be a letter $_var # again, the second character must be a letter $variable! # you can't have a ! in a variable name $variable! # you can't have a ! in a variable name $new.var # you can't have a . in a variable name $new.var # you can't have a . in a variable name
زبان این های زبان متغیر این های متفاوت Case SensitiveCase Sensitiveمتغیر هم با زیر های متغیر یعنی متفاوت هستند هم با زیر های متغیر یعنی هستندهستند:هستند:
$VAR$VAR $var$var
$Var$Var
1818
ها ها متغیر متغیر: کند می تبدیل کیلومتر به را مایل که ای برنامه از :مثالی کند می تبدیل کیلومتر به را مایل که ای برنامه از مثالی
1: #!/usr/local/bin/perl 1: #!/usr/local/bin/perl 2: 2: 3: print )"Enter the distance to be converted:\n"(;3: print )"Enter the distance to be converted:\n"(; 4: $originaldist = <STDIN>; 4: $originaldist = <STDIN>; 5: chop )$originaldist(; 5: chop )$originaldist(; 6: $miles = $originaldist * 0.6214;6: $miles = $originaldist * 0.6214; 7: $kilometers = $originaldist * 1.609;7: $kilometers = $originaldist * 1.609; 8: print )$originaldist, " kilometers = ", $miles, 9:8: print )$originaldist, " kilometers = ", $miles, 9: " miles\n"(; " miles\n"(; 10: print )$originaldist, " miles = ", $kilometers,10: print )$originaldist, " miles = ", $kilometers, 11: " kilometers\n"(; 11: " kilometers\n"(;
1919
ها ها داده داده
#!/usr/bin/firstExample.pl#!/usr/bin/firstExample.plprint "Hello" . " " . "world\n";print "Hello" . " " . "world\n";print "hi there " . 2 . " worlds!" ."\n";print "hi there " . 2 . " worlds!" ."\n";print (("5" + 6) . " eggs\n" . " in " . " 3 print (("5" + 6) . " eggs\n" . " in " . " 3 + 2 = " . ("3" + "2") . " baskets\n" );+ 2 = " . ("3" + "2") . " baskets\n" );
2020
و و جمله tokentokenجمله
باید که است عمل یک زبان این مفسر برای جمله باید یک که است عمل یک زبان این مفسر برای جمله یکای مجموعه صورت به تواند می برنامه یک و شود ای انجام مجموعه صورت به تواند می برنامه یک و شود انجاممی اجرا زمان یک در که شود گرفته نظر در ها جمله می از اجرا زمان یک در که شود گرفته نظر در ها جمله از
شوند.شوند. قسمت به را آن ببیند جمله یک زبان این مفسر که قسمت زمانی به را آن ببیند جمله یک زبان این مفسر که زمانی
: مثال عنوان به که کند می تبدیل تری کوچک :های مثال عنوان به که کند می تبدیل تری کوچک های $inputline , = , <STDIN> , and ; $inputline , = , <STDIN> , and ;
کوچکتر های بخش این از کوچکتر هریک های بخش این از می tokentoken هریک می نامیده نامیدهمی. مشخص خالی فاصله عالمت با ها بخش این می. شود مشخص خالی فاصله عالمت با ها بخش این شود
. ندارد نقشی کار این در آنها تعداد اما .شوند ندارد نقشی کار این در آنها تعداد اما شوند
2121
ها ها عملگر عملگر
2222
متغیر روی بر حسابی متغیر اعمال روی بر حسابی اعمالهاها
$var $var = = 1717 + + 5; 5; $var $var = = 1717 + + 55 - - 3; 3; $var1$var1 = = 11; 11; $var2$var2 = = $var1$var1 * * 6; 6;
2323
شرطی شرطی جمالت جمالت
2424
شرطی ) شرطی )جمالت ((22جمالت
ورودی کلمه بازای برنامه ورودی خروجی کلمه بازای برنامه RahnamaRahnamaخروجی
2525
ها ها حلقه حلقه در ها حلقه در تعریف ها حلقه انواع PerlPerlتعریف شامل دیگر های زبان انواع مانند شامل دیگر های زبان مانند
قبیل از قبیل مختلفی از ، ، WhileWhile ،، ForForمختلفی UntilUntil. .... است .و .... است وforfor ($n = 1 ; $n < $max ; $n += 2) { ($n = 1 ; $n < $max ; $n += 2) { $sum += $n; }$sum += $n; }
untiluntil ($n >= $max) { ($n >= $max) { $sum += $n;$sum += $n; $n += 2; }$n += 2; }
whilewhile ($n < $max) { ($n < $max) { $sum += $n;$sum += $n; $n += 2; }$n += 2; }
2626
کنترلی های ساختار کنترلی مقایسه های ساختار PerlPerlمقایسهCCو و
C C Perl )braces required( Perl )braces required(
the same the same if () { ... } if () { ... } if () { ... } if () { ... }
if (! ) { ... } if (! ) { ... } unless () { ... } unless () { ... }
differentdifferent} else if () { ... } } else if () { ... } } elsif () { ... }} elsif () { ... }
the samethe samewhile () { ... } while () { ... } while () { ... } while () { ... }
the same the same for (aa;bb;cc) {...} for (aa;bb;cc) {...} for (aa;bb;cc) {...}for (aa;bb;cc) {...}
foreach $v (@array){... } foreach $v (@array){... }
differentdifferentbreakbreaklastlast
differentdifferentcontinuecontinuenextnext
similarsimilar0 is 0 is FALSEFALSE 0, "0", and "" are 0, "0", and "" are FALSEFALSE
similarsimilar!= 0 is != 0 is TRUETRUE anything not false is anything not false is TRUETRUE
2727
ها ها آرایه آرایه یک لیست مجموعه ای از داده های منظم است و یک متغیر یک لیست مجموعه ای از داده های منظم است و یک متغیر
که لیست را معرفی می کند آرایه گویند.که لیست را معرفی می کند آرایه گویند. برای تعریف آرایه و یا دسترسی به کل آن از نماد @ استفاده برای تعریف آرایه و یا دسترسی به کل آن از نماد @ استفاده
ARGVARGV@@می شود. می شود. : برای دسترسی به یک عضو از آرایه : برای دسترسی به یک عضو از آرایه
$$ARGV[0]ARGV[0] برای کار با آرایه می توان توابعی تعریف کرد و یا از برای کار با آرایه می توان توابعی تعریف کرد و یا از
استفاده کرد. استفاده کرد. sort, reverse, push, popsort, reverse, push, popتوابع آماده مثل توابع آماده مثل
2828
Hash Hash hashhash را را
پذیر شرکت پذیر آرایه شرکت آرایه((Associative arrayAssociative array)). همهم گویند .می گویند می
عناصر عناصرhashhash هر هرولی باشند توانند می ولی چیزی باشند توانند می چیزی
شکل به ها آن شکل درنهایت به ها آن درنهایت. رشته رشته آیند می .در آیند می در
معرفی معرفی برای و و hashhashبراینماد از آن کل به نماد اشاره از آن کل به اشاره
. کنیم % می .استفاده کنیم % می استفاده
2929
Hash Hash )2()2(
3030
در فایل کردن در باز فایل کردن PerlPerlباز open open ))filevar, filename(filevar, filename( ; ; openopen))FILE1, FILE1, "/"/uu//jqpublicjqpublic//file1file1"("(; ;
: فایل از :خواندن فایل از خواندن $line $line = = <MYFILE>; <MYFILE>;
: ها فایل کاربا از :مثالی ها فایل کاربا از مثالی 1: #!/usr/local/bin/perl1: #!/usr/local/bin/perl 2: 2: 3: if )open)MYFILE, "file1"(( { 3: if )open)MYFILE, "file1"(( { 4: $line = <MYFILE>;4: $line = <MYFILE>; 5: while )$line ne ""( { 5: while )$line ne ""( { 6: print )$line(; 6: print )$line(; 7: $line = <MYFILE>;7: $line = <MYFILE>; 8: } 8: } 9: } 9: }
3131
( ) ( الگو منظم ( )جمالت ( الگو منظم Regular expressions Regular expressionsجمالت)pattern()pattern())
Regular expressionRegular expression از ای مجموعه که است از الگویی ای مجموعه که است الگویی. کند می تعریف را ها .رشته کند می تعریف را ها رشته
ترین ترین ساده . PatternPatternساده است کاراکتر یک . تنها است کاراکتر یک تنها: نباشند حرف شامل که هایی رشته :کالس نباشند حرف شامل که هایی رشته [[A-Za-zA-Za-z]^]^ کالس
: هشت مبنای در اعداد : کالس هشت مبنای در اعداد [ [ 0123456701234567]]کالس
$x = "01239876AGH";$x = "01239876AGH";
if ( $x =~ /^0[1-9]{4,}/ )if ( $x =~ /^0[1-9]{4,}/ ){ print "yes1\n"; }{ print "yes1\n"; }
if ( $x =~ /[A-Z]{3}$/ )if ( $x =~ /[A-Z]{3}$/ ){ print "yes2\n"; }{ print "yes2\n"; }
if ( $x =~ /^.*[A-Z]{4}$/ )if ( $x =~ /^.*[A-Z]{4}$/ ){ print "yes3\n"; }{ print "yes3\n"; }
3232
Pattern MatchingPattern Matching
PerlPerl: دارد ها رشته با کار برای بسیاری های دارد :عملگر ها رشته با کار برای بسیاری های عملگر
(: رشته یک در خاص عبارتی وجود آزمایش :) عملگر رشته یک در خاص عبارتی وجود آزمایش ( (=~=~عملگر
$result = $var =~ /abc/;$result = $var =~ /abc/;
. است نادرست و درست صورت به عملگر این .نتیجه است نادرست و درست صورت به عملگر این نتیجه
3333
Pattern MatchingPattern Matching + و های و + عملگر های زیر [ ][ ]عملگر صورت به ها رشته با کار برای زیر نیز صورت به ها رشته با کار برای نیز
: کنند می :عمل کنند می عمل
عبارت عبارت//de+fde+f / / زیر های رشته از یک هر زیر با های رشته از یک هر :matchematcheبا شود :می شود می
DefDef deefdeef deeef deeef deeeeeeefdeeeeeeef
با زیر با عبارت زیر ، ، def or dEf def or dEfعبارت matchematche: شود :می شود می /d]eE[f//d]eE[f/
3434
توابع و ها برنامه زیر توابع تعریف و ها برنامه زیر تعریف
sub max {
if ) $x > $y ( { $x } else { $y }
}
$x = 10; $y = 11;
print &max . "\n";
تابع زبان die از در شده دادن Perlتعریف خاتمه برایاز و توابع در warnبه الزم مواقع در دادن اخطار برای
. شود می استفاده توابع
3535
PerlPerl پیشرفتهپیشرفته
با با کار با DatabaseDatabaseکار ارتباط با و ارتباط ODBCODBCو
گرا شئ نویسی گرا برنامه شئ نویسی برنامه
3636
برنامه یک از برنامه مثالی یک از CGICGIمثالی
3737
از از مثالی CGICGIمثالی
3838
3939
4040iran
4141
4242
منابعمنابع “ “ Mastering ™ Perl ™ 5 ” by Eric C. Mastering ™ Perl ™ 5 ” by Eric C.
Herrmann ,published by Sybex , 1999.Herrmann ,published by Sybex , 1999. “ “ A Little Book on Perl” by Robert W . Sebesta, A Little Book on Perl” by Robert W . Sebesta,
Published by Prentice Hall ,2000.Published by Prentice Hall ,2000. “ “ CGI Programming on the World Wide Web ” by CGI Programming on the World Wide Web ” by
Shishir Gundavaram , 1996.Shishir Gundavaram , 1996. ““Perl 5 by Examples” by David Medinets, 2000. Perl 5 by Examples” by David Medinets, 2000. www.perl.orgwww.perl.org www.oreilly.comwww.oreilly.com www.softlookup.com/tutorial/cgi_perl/ch19.aspwww.softlookup.com/tutorial/cgi_perl/ch19.asp
4343
. گزارم سپاس شما توجه .از گزارم سپاس شما توجه از