Не сте регистриран! Регистрирайте се БЕЗПЛАТНО, за да използвате услугите на сайта!

   Рубрики
 
 
 
 

 Форуми
» SEO и оптимизация
» Всичко за PHP и Perl
» Всичко за C, C++ и .NET
» Всичко за Java и JSP
» Всичко за SQL и MySQL
» Всичко за XHTML и CSS
» Презентация на сайтове
 PERL - ТРЕТА ЧАСТ
  1. PERL - ТРЕТА ЧАСТ
deam0n
     
Автор  deam0n (19.02.2005 16:02)  съобщение до автора
Погледнат  2869 пъти  добави към любими
Оценка  добави коментар
Гласове  --  изпрати на приятел
Коментари  (0)  абонирай се за Perl
    Страница 1 / 1

 



  Както споменахме в Perl има три типа данни : скалари, списъци и хешове. Съответно има и три типа променливи, в които да ги съхраняваме: скаларни променливи, масиви и хешове. Тук ще разгледаме само скаларните променливи, а останалите в следващата глава. Всяка една скаларна променлива започва със знака за долар: $var, $apple. Следващият знак трябва да е подчертаващо тире, малка или голяма буква. След това е допустима произволна комбинация от букви, цифри и подчертаващи тирета с обща дължина до 251 символа. Ето и пример за използване на променливи:

CODE
1
2
3
4
5
6
7
8
9
#!/usr/bin/perl
#ex8.plx
use warnings;
$tree = "apple";
$quantity = 3;
print "The $tree has only $quantity applesn";

>
perl ex8.plx
The apple tree has only
3 apples

  Както забелязвате и тук, както в Java Script не е нужно променливата да се декларира преди да се използва.
   Както и Java Script и Perl позволява едновременното извършване на операции и присвояване. Синтаксисът и тук е следнията : $a <оператор>= $b. Например :

CODE
1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/perl
#ex9.plx
use warnings;
$a = 3 * 8;
print "Three eights are $a.n";
$a +=10;
print "Plus ten is $a.n";

>
perl ex9.plx
Three eights are
24.
Plus ten is 34.

Тези комбинации от оператори включват **==, *=, -=, /=, .=, %=, &=, |=, ^=, <<=, >>=, &&= и ||=. Те имат същия приоритет както и оператора =. Освен тези оператори Perl притежава и операторите за автоматично инкрементиране и декрементиране - ++ и --. Те имат същото действие както и в Java Script. Perl позволява многократно присвояване на една стойност на няколко променливи :

CODE
1
$c = $b = $a = 1;

Това е едно от нещата, което обаче не трябва да правите, тъй като създава доста объркан код.
   Променливите, които писахме досега са глобални променливи. Използването на глобални променливи не би трябвало да създава проблеми - поне на първо време. Но когато започнете да пишете наистина големи програми, използването само на глобални променливи наистина не е добра идея. Затова Perl въвежда понятието лексикална променлива. Тяхната област на видимост е ограничена до обхвата на текущия блок и всички блокове, които той обваща. Ако лексикалната променлива не се намира в блок, то действието й е ограничено до текущия файл. Декларирането на лексикална променлива става със запазената дума my : my $apple;, my $quantity;. Ето и пример :

CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/perl
#ex10.plx
use warnings;
$a = 1;
print "Outside block value is $a.n";
{
   
my $a = 10;
   
print "Inside block value is $a.n";
}
print "Otside block value is still $a.n";

>
perl ex10.plx
Outside block value is
1.
Inside block value is 10.
Otside block value is still 1.
>

За да сме по прецизни при писането на програмите, трябва да укажем да perl да следи използването на променливите. Това става с конструкцията "use strict;" , която освен това следи и дали сте декларирали всички променливи. Вече знаете как да декларирате лексикални променливи - чрез my . Но как да декларирате глобални променливи? Това става със запазената дума our . Нека сега да променим нашия пример:

CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/perl
#ex10.plx
use warnings;
use strict;
our $a = 1;
print "Outside block value is $a.n";
{
my $a = 10;
print "Inside block value is $a.n";
}
print "Otside block value is still $a.n";

>
perl ex10.plx
Outside block value is
1.
Inside block value is 10.
Otside block value is still 1.
>


 На пръв поглед никаква разлика. Обаче ако пропуснем our ще получим следната грешка : Global symbol "$a" requires explicit package name. И накрая един съвет - избягвайте декларирането на глобални променливи.
   Perl предоставя вътрешно множество служебни променливи, които вие не трябва да предефинирате. Такава е и променливата $_. Това е подразбиращата се скаларна променлива и perl ще използва нейната стойност в множество функции, ако не сте задали друга променлива естествено. Същите подразбиращи се променливи има за масиви и хешове - съответно @_ и %_.
   Сега ще разгледаме интерполацията на променливи, за която само споменахме по - рано. Както казахме, низовете заградени в апострофи не се интерполират. Това означава, че ако напишете 'My name is $name' , perl ще ви прекръсти на $name, вместо да сложи вашето истинско име съдържащо се в скаларната променлива $name. Ето и пример за казаното :

CODE
1
2
3
4
5
6
7
8
9
10
11
12
#!/usr/bin/perl
#ex12.plx
use warnings;
use strict;

my $name = "Josh";
print "My name is $name.n";
print 'My name is $name.n';

>
perl ex12.plx
My name is Josh
.
My name is $name.n>

 Ако искате да поставите текст непосредствено след променливата, то трябва да заградите променливата във фигурни скоби:

CODE
1
2
3
4
5
6
#Следващият ред няма да работи, тъй като
#perl ще търси променлива $counterth.
$counter = 8;
print "Last operation was repeated $counterth times;
#Ето това е правилния запис
print
"Last operation was repeated ${counter}th times;

 Дотук нашите програми не можеха да получават данни от потребителя (освен ако потребителя не разбира perl и не промени кода на програмата). Такива програми не са особенно полезни и затова Perl ни предоставя начин за въвеждане на данни. Това става с конструкцията <STDIN>, която чете ред от файл наречен стандартен вход. Стандартния вход обикновенно, обаче не е файл, а клавиатурата на потребителя. Аналогично, по подразбиране функцията print печата във файл наречен стандартен изход, който обикновенно е екрана на компютъра. Стандартния изход се означва с конструкцията <STDOUT>. Тези две конструкции ще бъдат разгледани по-подробно когато разгеждаме файловете. Ето пример за използване на стандартния вход :

CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/perl
#ex13.plx
use warnings;
use strict;

print "Enter your name:";
my $name = <STDIN>;
print "Your name is $name.n";

>
perl ex13.plx
Enter
your name:Josh
Your name is Josh

>



   


Ключови думи: perl програмиране списък скалар хеш code код променлива масив java script


Още уроци от тази рубрика


 
  • Подобни теми от myLinks
 

 1 посетител чете този урок (0 потребители и 1 гост)  
Активни потребители: ---
   
  

Еmail  
 

 

 
  • Интересно от Софтуер
 



IT-PLACE.NET © 2004 - 2008