زبان های برنامه نویسی

۲ مطلب با موضوع «هفته‌ی سوم» ثبت شده است

php یک زبان open-source و اسکریپتی برای هدف های عمومی می باشد که اساسا برای تولید صفحات داینامیک وب استفاده می شود. php یکی از اولین زبان های server-side scripting (تکنیک استفاده از script ها به صورت نهفته در کد های HTML ) می باشد .

کد ها به وسیله ی وب سرور با php processor تفسیر می شوند و صفحات وب را نتیجه می دهند.

زبان php برای توسعه ی وب سرور ها ، و همچنین به صورت shell مستقل در خیلی از سیستم عامل ها و platform های بدون تغییر.

نرم افزار هایی که از php استفاده می کنند عبارت اند از : Wordpress- MediaWiki -Joomla - Drupal

php اساسا کوتاه شده ی عبارت Personal Home Page می باشد ولی آن را به php را به PHP Hypertext Preprocessor هم نسبت می دهند.

سادگی استفاده از زبان php و شباهت آن به زبان های C و Perl باعث شده اغلب برنامه نویسان با تجربه در کوتاه ترین زمان ممکن برنامه های کامل و قدرتمندی ایجاد کنند.

می توان از PHP-GTK برای طراحی برنامه هایی با ظاهر گرافیکی(GUI) استفاده کرد.


تاریخچه

توسعه ی php در سال 1994 شروع شد توسط برنامه نویس ای به نام Rasmus lerdof . یک مجموعه از اسکریپت های پرل را نگهداری صفحات شخصی خود به وجود آورد.اسکریپت ها وظایفی مثل نمایش resume او و یا ثبت ترافیک web page اش.

او این اسکریپت ها را مثل زبان C به صورت باینری بازنویسی کرد و آن را گسترش داد که بتوانند از web form ها استفاده کنند و با پایگاه داده ارتباط داشته باشند و آن را PHP/FI نامیدند. از PHP/FI برای تولید آسان و پویای وب اپلیکیشن استفاده می شد. lordof توسعه ی php را با ورژن 1.0 در سال 1995 رها کرد تا آن را بهبود ببخشد و اشکالات آن را برطرف کند و این کار باعث به وجود آمدن ورژن دوم php شد که هم اکنون هم استفاده می شود. ترکیب آن مثل پرل بود اما ساده تر ، پایدار تر و محدود تر .

Zeev Suraski و Andi Gutmans دو توسعه دهنده فناوری IIT در اسرائیل بودند که پارسر را در سال 1997 دوباره نوشتند و اساس php3 را تشکیل دادند و نام آن را به دوباره به php تغییر دادند.این دو نفر گروهی را برای بازنویسی پی اچ پی تشکیل دادند و در سال 1999 Zend Engine را تولید کردند.

در۲۲ ماه می۲۰۰۰ پی اچ پی ۴ که توسط موتور زند روی کار آمده بود منتشر شد. در۱۳ ژوئیه ۲۰۰۴ پی اچ پی ۵ که توسط ماشین Zend2 نیرو گرفته بود منتشر شد. پی اچ پی ۵ دارای ویژگی‌هایی مانند پشتیبانی از زبان شی‌ٴ گرا (برای پایگاه داده) و وسعت بسیار زیاد در کارایی‌اش شده بود. پی اچ پیی که اخیرا توسط گروه پی اچ پی منتشر شده نسخه ۴ آن است. در آگوست ۲۰۰۸ این نسخه به ۴٫۴٫۹ توسعه یافت.


امنیت


حدود 30% از آسیب پذیزی هایی که در دیتابیس جهانی آمده است به php منتسب می شود.دلیل عدم رعایت قوانین برنامه نویسی می باشد .در واقع درصد خلیلی کمی از این مشکل به اصل زبان و تکنیک های امنیتی زبان بر می گردد(تقریبا 1% از کل).

خیلی از زبان ها مثل پرل و روبی از tain checking برای چک کردن اینکه در فایل های ورودی اشتباه رخ داده است یا نه استفاده می کنند.از چنین ویژگی هایی برای زبان پی اچ پی استفاده شد در گذشته اما همه ی آنها رد شد.

PHPIDS امنیت را به برنامه های php اضافه می کند و از آن در برابر نفوذ محافظت می کند.PHPIDS از برنامه در مقابل دستورات SQL، دستورات header ،اجرای فایل های از را دور و ... محافظت می کند.


syntax


مفسر پی اچ پی فقط کد هایی را اجرا می کند که در جداکننده قرار دارند .این جداکننده در حالت کلی برای شروع php?> , برای بستن آن از <? استفاده می شود.حالت کوتاه تر آن به صورت ?> و <؟ استفاده می شود اما این حالت حالت portable بودن فایل ها را کم می کند پس استفاده از حالت کلی بیشتر توصیه می شود.

از /* */ comment کردن یک قطعه کد و از // یا # برای comment کردن یک خط استفاده می شود.

کلمات کلیدی در این زبان مثل بقیه ی زبان های سطح بالا می باشد.


یک برنامهٔ پی‌اچ‌پی می‌تواند قسمتی از یک برنامهٔ (HTML) باشد. مثلاً در برنامهٔ زیر


<code>
<pre>
<html>
<head>
<title>Azmayesh</title>
</head>

<body>
<?php echo 'Hello world!'; ?> </body> </html> </pre> </code>

تنها یک خط از آن که در زیر آمده است پی اچ پی می باشد و بقیه آن HTML می باشد.


<?php
echo 'Hello world!'; ?>



انواع تایپ ها


PHP همه متغیرها را در یک محدوده مستقل ذخیره می‌کند. این محدوده به طور نمونه ۳۲ بیت اعداد علامتدار است. اعداد بدون علامت در حالتهای معینی به مقادیر علامتدار تبدیل می‌شوند: این رفتار متفاوت از زبانهای برنامه نویسی است. متغیرهای صحیح می‌توانند به صورت دهدهی(مثبت یا منفی) ٬هشت هشتی و شانزده شانزدهی مشخص شوند.

اعداد واقعی نیز در محدوده معینی ذخیره می‌شوند. آنها می‌توانند به دو صورت اعشاری و علمی استفاده شوند.PHP دارای یک نوع محلی بولین می‌باشد که شبیه به بولین در زبان جاوا و ++C است. در نوع داده بولین مقدار غیر صفر به عنوان درست و مقدار صفر به عنوان نادرست استفاده می‌شود. همانطور که در پرل و ++C نیز همین طور است.

نوع داده null برای متغیرهایی که هیچ مقداری ندارند استفاده می‌شود.

متغیرهایی با نوع مرجع(resource) به منابع خارجی اشاره می‌کنند. اینها نوعا توسط توابع ایجاد می‌شوند و تنها می‌توانند با همان تابع مورد استفاده قرار گیرند. مانند پوشه‌ها و عکسها و پایگاه داده.

PHP آرایه‌ها و رشته‌ها را هم پشتیبانی می‌کند. آرایه می توانند متغیرهایی از هر یک از انواع داده که توسط زبان پشتیبانی می شود تشکیل شده باشد. رشته ها را هم می توان با " " نمایش داد هم با ' ' .


چند ویژگی php

1- در php متغیر ها با $ مشخص می شوند که در واقع از روش keywords برای مشخص کردن کلمات کلیدی  استفاده می کند و به این ترتیب کلمات کلیدی مثل if با نداشتن $ مشخص می شوند.


<?php
$txt="Hello World!";
$x=16;
?>


2- php در زمان type checking ،compile انجام نمی دهد و type checking  ضعیف دارد و اگر در خود تابع از اینکه تایپ های مختلف با هم در دو طرف عملیات باشند جلوگیری نشود error داده نمی شود.



 توابع

 اختیاری بودن تعداد آرگومان ها

در php می توان تابع را یا تعدادی آرگومان تعریف کرد ولی در هنگام صدا کردن آنها می توان با تعداد آرگومان های کمتر یا بیشتر آنها را صدا کرد.همان طور که در کد زیر مشاهده می شود.



  1. // function with 2 optional arguments  
  2. function foo($arg1 = '', $arg2 = '') {  
  3.     echo "arg1: $arg1\n";  
  4.     echo "arg2: $arg2\n";  
  5. }  
  6. foo('hello','world');  
  7. /* prints: 
  8. arg1: hello 
  9. arg2: world 
  10. */  
  11. foo();  
  12. /* prints: 
  13. arg1: 
  14. arg2: 
  15. */ 

از تابع () func_get_args برای مشخص شدن تعداد ورودی هایی که تابع با آنها صدا زده شده استفاده می شود.


  1. // yes, the argument list can be empty  
  2. function foo() {  
  3.     // returns an array of all passed arguments  
  4.     $args = func_get_args();  
  5.     foreach ($args as $k => $v) {  
  6.         echo "arg".($k+1).": $v\n";  
  7.     }  
  8. }  
  9. foo();  
  10. /* prints nothing */  
  11. foo('hello');  
  12. /* prints 
  13. arg1: hello 
  14. */  
  15. foo('hello', 'world', 'again');  
  16. /* prints 
  17. arg1: hello 
  18. arg2: world 
  19. arg3: again 
  20. */  



چند مثال از تابع های موجود


1-error and logging function

این توابع امکان رفع خطا و ذخیره سازی را می دهند.

توابع error به کاربر اجازه می دهند که قوانین رفع خطا را مشخص کنند و توابع ثبت کننده هم این اجازه را می دهند که کاربر بتواند از برنامه log داشته باشد و خطا ها را به ایمیل بفرستد و یا با مکانیزم های دیگر آنها را ذخیره کند.به برخی از این توابع در زیر اشاره شده است.


debug_backtrace ()


این تابع به صورت بازگشتی اطلاعاتی را از کد که باعث شده به این تابع برسیم را نمایش می دهد.این اطلاعات را به صورت آرایه نمایش می دهد.
اطلاعاتی که در هر یک از خانه های آرایه ذخیره می شوند عبارت اند از:
اسم تابع-اسم فایل ذخیره شده در آن-شماره خط و...
کد زیر یک نمونه استفاده از این تابع می باشد.

<?php
function one($str1, $str2)
{
two("Glenn", "Quagmire");
}
function two($str1, $str2)
{
three("Cleveland", "Brown");
}
function three($str1, $str2)
{
print_r(debug_backtrace());
}

one("Peter", "Griffin");
?>

که خروجی آن به صورت زیر است.


Array
(
[0] => Array
(
[file] => C:\webfolder\test.php
[line] => 7
[function] => three
[args] => Array
(
[0] => Cleveland
[1] => Brown
)
)
[1] => Array
(
[file] => C:\webfolder\test.php
[line] => 3
[function] => two
[args] => Array
(
[0] => Glenn
[1] => Quagmire
)
)
[2] => Array
(
[file] => C:\webfolder\test.php
[line] => 14
[function] => one
[args] => Array
(
[0] => Peter
[1] => Griffin
)
)
)

user_error()

برای تولید error مناسب در جای مشخص شده توسط برنامه نویس که در هنگام رخ داد error بتوان به راحتی مکان آن و علت آن را پیدا کرد.



<?php
$test=2;
if ($test>1)
{
user_error("A custom error has been triggered");
}
?

Notice: A custom error has been triggered
in C:\webfolder\test.php on line 6

برخی دیگر از این توابع عبارت اند از:

()restore error handler

() error get last

() set exception handler

() trigger error

()set_error_handler


2-date

از این تابع برای مشخص کردن فرمت نمایش تاریخ استفاده می شود .و همچنین این تابع می تواند یک آرگومان  دیگر داشته باشد که یک زمان مشخص را با یک فرمت خاص بدهد. مثلا تاریخ فردا را با یک فرمت خاص چاپ کند.کد زیر این کار را انجام می دهد.

<?php
$tomorrow = mktime(0,0,0,date("m"),date("d")+1,date("Y"));
echo "Tomorrow is ".date("Y/m/d", $tomorrow);
?>


Tomorrow is 2009/05/12


3-serialize() 

در php  از این تابع برای ذخیره  ساختار های  پیچیده  استفاده می شود.

کد زیر کاربرد این تابع را نشان می دهد.


  1. // a complex array  
  2. $myvar = array(  
  3.     'hello',  
  4.     42,  
  5.     array(1,'two'),  
  6.     'apple'  
  7. );  
  8. // convert to a string  
  9. $string = serialize($myvar);  
  10. echo $string;  
  11. /* prints 
  12. a:4:{i:0;s:5:"hello";i:1;i:42;i:2;a:2:{i:0;i:1;i:1;s:3:"two";}i:3;s:5:"apple";} 
  13. */  
  14. // you can reproduce the original variable  
  15. $newvar = unserialize($string);  
  16. print_r($newvar);  
  17. /* prints 
  18. Array 
  19. ( 
  20.     [0] => hello 
  21.     [1] => 42 
  22.     [2] => Array 
  23.         ( 
  24.             [0] => 1 
  25.             [1] => two 
  26.         ) 
  27.     [3] => apple 
  28. ) 
  29. */  

۱ نظر موافقین ۰ مخالفین ۰ ۰۴ آذر ۹۱ ، ۱۷:۰۳
فهیمه هاجری

مقدمه

Perl یک زبان برنامه‏نویسی سطع بالای عام منظوره است که توسط مفسر اجرا می شود. Perl یک زبان پویا است. زبان برنامه‏نویسی پویا به زبانی گفته می‏شود که بسیاری از کارهایی را که زبان‏های برنامه‏نویسی دیگر در زبان کامپایل انجام می‏دهند، در زمان اجرا انجام می‏دهد. این اعمال، می‏تواند شامل این موارد باشد: افزودن کد جدید(مانند تابع eval که در جاوا اسکریپت بیان کردیم)، توسعه‏ی اشیا (مانند افزودن یا حذف فیلد و یا متد از یک شی موجود و یا تغییر کلاس آن) و یا تغییر سیستم تایپ (مانند استفاده از reflection).


تاریخچه

Perl در ابتدا در سال 1987 توسط لری وال ایجاد شد. هدف از ایجاد این زبان اسکریپتی، تسهیل فرآیند گزارش‏گیری در یونیکس بود. پس از آن، این زبان دچار تغییرات عمده‏ای شد و آخرین نسخه‏ی این زبان، که در سال 2012 منتشر شد، نسخه‏ی 5.16 است. هم‏چنین در سال 2000 اعلام شد که این زبان در حال طراحی مجدد است، اما هم‏چنان در حال توسعه‏ی فعال است.

این زبان ویژگی‏هایی را مرهون زبان‏هایی مانند C، شل اسکریپت، AWK و sed است. این زبان، ابزارهای قدرتمندی را برای پردازش متن در اختیار کاربران قرار می‏دهد که بسیاری از محدودیت‏های ابزارهای مدرن در یونیکس را نداشت. Perl امکان دستکاری فایل‏های متنی را در اختیار کاربران قرار می‏دهد. این زبان در اواخر دهه‏ی 90، به دلیل وجود امکانات پارس کردن، محبوبیت گسترده‏ای را در اسکریپتینگ برای CGI(Common Gateway Interface) به دست آورد.

در مستندات این زبان آمده است که این زبان با هدف عملی بودن(سادگی در استفاده، کارایی، و کامل بودن) ایجاد شده است و نه زیبایی(تمیز بودن، کمینگی...).


آموزش زبان

در ادامه به بررسی زبان به همراه کدهای نمونه می‌پردازیم. هم‌چنین به نکات مهم این زبان نیز به طور پیوسته، هر جا که لازم بود، اشاره می‌کنیم.


برای اجرای یک برنامه‌ی Perl، کافی است کد آن را در فایلی، مثلا با نام prog.pl، ذخیره کرده و سپس از دستور زیر استفاده کنیم:

perl prog.pl

و یا می‌توان در خط اول فایل مورد نظر قرار داد:

#!/usr/bin/perl

و سپس با تغییر مد فایل به ۷۵۵ با دستور زیر این اسکریپت را اجرا کرد:

./prog.pl

Perl در پردازش فایل ورود‌ی‌اش، تا حد امکان از خطاها صرف نظر می‌کند. برای این که از این مفسر بخواهیم که این کار را انجام ندهد، می‌توانیم این دو خط را به اول فایلمان بیافزاییم:

#!/usr/bin/perl
use strict;
use warnings;

در Perl نیازی به داشتن تابعی مانند main نیست.  هم‌چنین در این زبان، فضاهای سفید در نظر گرفته نمی‌شوند به جز در بین دو علامت نقل قول:

print "Hello,
   World."; # <- this is a comment

نتیجه به این صورت خواهد بود:

Hellow,
   World.

تعریف متغیر و استفاده از آن در چاپ در خروجی در این زبان به این صورت انجام می‌پذیرد:

my $animal = "camel";
print "my animal is $animal";

توجه کنید که در این جا ما تایپ متغیر را تعریف نکردیم و این موضوع به صورت ضمنی(implicit) مشخص می‌شود. بنابراین نوع بررسی تایپ این زبان از نوع ضعیف است. حتی این زبان در صورت لزوم تبدیلات لازم را انجام می‌دهد. 

نکته‌ی دیگری که در اینجا وجود دارد این است که همان طور که در بالا مشخص است، identifier های این زبان با $ آغاز می‌شوند. البته این همیشه درست نیست. در حقیقت همیشه با یک sigil آغاز می‌شوند. بنابراین روشی که این زبان در حل مشکل کلمات کلیدی انتخاب کرده‌است این است که identifierها را از کلمات کلیدی با یک کاراکتر در ابتدایشان مشخص می‌کند. این راه حل بسیار شبیه پیاده‌سازی php است.

برای تعریف آرایه و استفاده از آن نیز باید به این صورت استفاده کرد:

my @animals = ("camel", "llama", "owl");
print $animals[0];

توجه کنید که برای تعریف آرایه از علامت @ و برای مشخص کردن یک عضو خاص آن از $ استفاده می‌کنیم.

هم چنین این زبان، انجام برخی کارهای مهم مانند مرتب سازی را به این سادگی در اختیار ما قرار می‌دهد:

my @sorted = sort @animals;
my @reversed = reverse @animals;
my @subarray = @animals [1..@#animals]; # note that @#animals gives the last index

داده ساختار دیگری که در این زبان وجود دارد hash نام دارد که همان map در جاوا است! برای تعریف آن می‌توان به صورت زیر عمل کرد:

my %fruit_color = (
    apple => "red",
    banana => "yellow",
);
print "the color of apple is $fruit_color{'apple'}\n";
my @fruits = keys %fruit_color;
my @colors = values %fruit_color;

در این زبان، scope هر متغیر تا انتهای بلاکی است که در آن تعریف شده‌است و هم‌چنین این زبان static scope است.


ساختارهای شرطی و حلقه

در این زبان ساختار شرطی به صورت‌های زیر موجود است:

if (condition) {
   ...
} elsif (other condition) {
   ...
} else {
}
unless (condition) { # this is a short hand of if(!condition)
   ...
}

دستورهای حلقه‌ای نیز به این صورت وجود دارند:

while (condition) {
   ...
}
unless (condition) { # the same as unless
   ...
}

syntax حلقه‌ی for آن کاملا مانند زبان C است:

for ($i = 0;$i < 10;$i ++) {
   ...
}

هم‌چنین امکان استفاده از foreach نیز در این زبان وجود دارد:

foreach my $key (keys %hash) {
   ...
}


عملگر های Perl

در این زبان تمامی عملگرها دقیقا مشابه زبان C هستند، با یک تفاوت کوچک: برای مقایسه‌ی رشته‌ها از عملگرهایی مانند eq، ne، lt و ... باید استفاده کرد. دلیل این تفاوت نکته‌ی جالبی است که به weak typing بودن زبان بر می‌گردد. در تعریف یک متغیر این زبان، نه تنها در هنگام تعریف تایپی نسبت داده نمی‌شود، بلکه در هنگام اجرا نیز اگر لازم باشد "72" را به عدد ۷۲ نیز تبدیل می‌کند. از طرف دیگر، عدد ۱۰۰ به عنوان یک عدد باید از ۹۹ بیشتر باشد، در حالتی که به عنوان یک رشته باید کوچک‌تر باشد. بنابراین ما نیاز داریم از عملگرهای متفاوتی برای مشخص کردن این تفاوت استفاده کنیم.


استفاده از فایل ورودی و خروجی نیز در این زبان بسیار ساده است:

open (my $in, "<", "input.txt") or die ("Can't open input.txt"); # kind of exception handling!
open (my $out, ">", "output.txt");
open (my $log, ">>", "my.log");

my $line = <$in>; # for reading one line
my $lines = <$in>; # for reading whole file

توجه کنید که همان‌طور که قبلا گفته بودیم، این زبان امکان کار با فایل و رشته‌ها را به شیوه‌ای بسیار ساده در اختیار ما قرار می‌دهد. کد بالا را با کد معادلش در زبان‌های دیگر مانند جاوا مقایسه کنید. طبیعتا، در چنین زبانی باید استفاده از عبارات منظم نیز به سادگی و  گستردگی میسر باشد. حال به بیان عبارات منظم در این زبان می‌پردازیم:


عبارات منظم

بررسی وجود یک زیررشته‌ی خاص در یک رشته‌ی موجود به این صورت انجام می‌شود:

if ($a =~ /foo/) { ... }

برای جانشین کردن یک رشته با رشته‌ای دیگر نیز از کدهای زیر می‌توان استفاده کرد:

$a =~ s/foo/bar/; # substituting first foo with bar
$a =~ s/foo/bar/g; # substituting ALL foo's with bar

به عنوان آخرین نکته، می‌توان از تکه کد زیر برای استخراج نام کاربری و نام میزبان یک رایانشانی استفاده کرد. عبارات داخل پرانتز، هر کدام، با 1$ و 2$ مشخص می‌شوند.

if ($email =~ /([^@]+)@(.+)/) {
   print "Username is $1";
   print "Hostname is $2";
}


تعریف زیر رویه‌ها

نوشتن زیر رویه به سادگی کد زیر است:

sub logger {
   my $logmessage = shift;
   open my $logfile, ">>", "my.log" or die "could not open log file";
   print $logfile $logmessage;
}

و صدا زدن این رویه به صورت زیر است:

logger ("We have a logger subroutine");

اما این کد چگونه کار می‌کند؟ اولا روشن است که با عبارت sub logger مشخص کرده‌ایم که می‌خواهیم زیر رویه‌ای با نام logger داشته باشیم. اما shift چیست؟ در Perl، ورودی‌های یک تابع در متغیری به نام _@ قرار دارند. از طرفی در داخل تعریف توابع، توابعی که با آرایه‌های کار می‌کنند مانند push، pop، shift و unshift به صورت پیش‌فرض این آرگومان را دریافت می‌کنند. کار تابع shift همان‌طور که از نامش پیداست، حذف اولین عنصر یک لیست و برگرداندن آن است. بقیه‌ی کار این رویه نیز واضح است.

این نوع پاس دادن آرگومان، خلاف اصول Impossible Error Principle و Defence in Depth Principle است.


شی‌گرایی در Perl

در Perl شی‌گرایی به صورت کمینه وجود دارد. البته Perl از مفاهیمی چون inheritance، encapsulation و polymorphism که پایه‌های شی‌گرایی هستند پشتیبانی می‌کند. حتی از وراثت چندگانه نیز پشتیبانی می‌کند. در این زبان syntax خاصی برای ساخت یک شی وجود ندارد. بلکه اشیا، معمولا داده‌ساختارهای خود Perl هستند که به صورت صریح به کلاس‌ها نسبت داده می‌شوند. این انتساب با کمک تابع بطنی bless صورت می‌گیرد که معمولا در سازنده‌ی شی استفاده می‌شود.

در این جا، مثالی از تعریف یک کلاس را به همراه سازنده‌اش می‌توانید مشاهده کنید:

package A;

sub new {
   my $class = shift;

   return bless {}, $class;
}

my $anInstance = A->new;

در این‌جا نکات جالبی دیده می‌شود. اولا برای تعریف کلاس، از دستور package استفاده می‌شود! در این‌جا ما در حال تعریف کلاس A هستیم. حال، برای این کلاس، متدی با نام new نوشتیم که نقش سازنده‌ی این کلاس را بازی خواهد کرد. توجه کنید که new کلید واژه نیست و هر نام دیگری را می‌توان برای این متد می‌توان قرار داد. هرچند که در CPAN(Comprehensive Perl Archive Network) مرسوم است که از new استفاده می‌کنند. حال، این سازنده با کمک دستور shift که پیشتر بیان شد، ابتدا نام کلاسش را می‌گیرد. سپس با کمک دستور bless مجموعه‌ی فیلدهای این کلاس را که در این‌جا hash خالی {} است را به کلاس class$ مربوط می‌کند. خروجی این تابع شی ساخته شده است که با کمک A->new ساخته می‌شود.

حال، برای این که این کلاس، کلاس دیگری را توسعه دهد، کافی است از دستور زیر بلافاصله بعد از package استفاده شود:

use parent 'A', 'B', ...;

در این زبان، متد ها را می‌توان به همان شیوه‌ی سازنده تعریف نمود و استفاده از فیلدها نیز به این صورت انجام می‌پذیرد:

package Student;

sub new {
   my $class = shift;
   my $name = shift;
   my $id = shift;

   my $self = {
         name => $name,
         id => $id,
      };
   bless $self, $class;
};

sub print_info {
   my $self = shift;

   print "Student name = $self->{name} ",
         "and Student id = $self->{id}\n";
};

my $student = Student->new ("Nima Hamidi", 87109956);
$student->print_info ();


منابع

ویکی پدیای Perl

وبگاه رسمی Perl

وبگاه آموزش Perl

۱ نظر موافقین ۰ مخالفین ۰ ۰۳ آذر ۹۱ ، ۱۹:۵۸
نیما حمیدی