📜  Perl Scalars

📅  最后修改于: 2021-01-07 08:13:25             🧑  作者: Mango

Perl标量

标量包含单个数据单位。它前面带有($)符号,后跟字母,数字和下划线。

标量可以包含数字,浮点数,字符或字符串。

我们可以通过两种方式定义标量。首先,我们可以一起声明和分配值。其次,我们将首先声明,然后将值分配给标量。

在下面的示例中,我们将展示定义标量的两种方法。

例:

use strict;
use warnings;
use 5.010;
#Declairing and assigning value together
my $color = "Red";
say $color;
#Declairing the variable first and then assigning value
my $city;
$city = "Delhi";
say $city;

输出:

Red
Delhi

Perl标量运算

在此示例中,我们将使用两个标量变量$ x$ y执行不同的操作。在Perl中,运算符告诉操作数如何表现。

例:

use strict;
use warnings;
use 5.010;
my $x = 5;
say $x;             
my $y = 3;
say $y;            
say $x + $y;        
say $x . $y;        
say $x x $y;

输出:

5
3
8
53
555

第一和第二输出分别是$ x和$ y的值。

(+)运算符只需将5和3相加即可得到8。

(。)是一个串联运算符,它将输出5和3串联起来,输出为53。

(x)是重复运算符,其左侧变量的重复次数与右侧变量的重复次数相同。

Perl特殊字面量

Perl中有三种特殊字面量:

__FILE__:代表当前文件名。

__LINE__:它代表当前的行号。

__PACKAGE__:它代表程序中当时的软件包名称。

例:

use strict;
use warnings;
use 5.010;
#!/usr/bin/perl
print "File name ". __FILE__ . "\n";
print "Line Number " . __LINE__ ."\n";
print "Package " . __PACKAGE__ ."\n";
# they can?t be interpolated
print "__FILE__ __LINE__ __PACKAGE__\n";

输出:

File name hw.pl
Line Number 6
Package main
__FILE__ __LINE __ __PACKAGE

Perl字符串上下文

Perl根据要求自动将字符串转换为数字,并将数字转换为字符串。

例如,5与“ 5”相同,5.123与“ 5.123”相同。

但是,如果字符串中的某些字符不是数字,则它们在算术运算中的表现如何。我们来看一个例子。

例:

use strict;
use warnings;
use 5.010;
my $x = "5";
my $y = "2cm";
say $x + $y;       
say $x . $y;      
say $x x $y;

输出:

7
52cm
55

在数字上下文中,Perl查看字符串的左侧,并将其转换为数字。该字符成为变量的数值。在数字上下文(+)中,给定的字符串“ 2cm”被视为数字2。

虽然,它会生成警告

Argument "2cm" isn't numeric in addition (+) at hw.pl line 9.

这里发生的是,Perl不会将$ y转换为数值。它只是使用了数字部分,即; 2。

Perl undef

如果您不会在变量中定义任何内容,则将其视为undef 。在数值上下文中,它充当0 。在字符串上下文中,它充当字符串。

use strict;
use warnings;
use 5.010;
my $x = "5";
my $y;
say $x + $y;       
say $x . $y;      
say $x x $y;
if (defined $y) {
  say "defined";
} else {
  say "NOT";         
}

输出:

Use of uninitialized value $y in addition (+) at hw.pl line 9.
5
Use of uninitialized value $y in concatenation (.) or string at hw.pl line 10.
5
Use of uninitialized value $y in repeat (x) at hw.pl line 11.
NOT