提交 7e69aba3 编写于 作者: W wizardforcel

2019-10-16 20:39:14

上级 68e82c9d
......@@ -6,7 +6,7 @@
## 如何定义数组?
数组以 **@** 符号为前缀。这就是你定义一个数组的方法 -
数组以`@`符号为前缀。这就是你定义一个数组的方法:
```
@friends = ("Ajeet", "Chaitanya", "Rahul");
......@@ -18,7 +18,7 @@
@friends = qw(Ajeet Chaitanya Rahul); #same as above
```
**注意:** **qw** 代表引用的单词,通过使用 qw 你可以避免引号并输入更少。
**注意**`qw`代表引用的单词,通过使用`qw`你可以避免引号并输入更少。
学习 Perl 时,您可能会遇到几个示例,其中您会看到以下类型的数组定义:
......@@ -28,7 +28,7 @@
这是因为 Perl 允许您选择任何标点字符作为分隔符。
以下所有陈述均相同:
以下所有语句均相同:
```
@friends = qw/Ajeet Chaitanya Rahul/;
......@@ -42,7 +42,7 @@
## 访问数组元素
您必须在另一个编程语言中使用过数组,如 C,C ++,Java 等。数组的基本概念在这里是相同的。让我们举一个例子来了解如何定义数组以及如何访问它的元素。
您必须在另一个编程语言中使用过数组,如 C,C++,Java 等。数组的基本概念在这里是相同的。让我们举一个例子来了解如何定义数组以及如何访问它的元素。
```
#!/usr/bin/perl
......@@ -62,11 +62,11 @@ $friends[1] = Chaitanya
$friends[2] = Rahul
```
正如你在上面的程序中看到的那样,数组是用 **@符号**进行的。因为,单个数组元素只是标量,它们是 **$符号**的预设。
正如你在上面的程序中看到的那样,数组是用**`@`符号**进行的。因为,单个数组元素只是标量,它们是**`$`符号**的预设。
#### 范围运算符:
范围运算符由双点“..”表示。此运算符用于创建顺序列表。例如:
范围运算符由双点`..`表示。此运算符用于创建顺序列表。例如:
```
#!/usr/bin/perl
......@@ -77,7 +77,7 @@ foreach $temp (@num) {
}
```
**Output:**
**输出:**
```
3
......@@ -97,9 +97,9 @@ foreach $temp (@num) {
(1, 3..6, 10, 12..14) # same as (1, 3, 4, 5, 6, 10, 12, 13, 14),
```
#### 运算符:弹出和推动
#### 运算符:`pop`和`push`
**pop 运算符**从数组中删除最后一个元素并返回它。让我们举个例子来了解 pop 运算符的工作原理:
`pop`运算符从数组中删除最后一个元素并返回它。让我们举个例子来了解`pop`运算符的工作原理:
```
#!/usr/bin/perl
......@@ -120,7 +120,7 @@ foreach $temp (@num) {
}
```
**Output:**
**输出:**
```
$n1 is: 7
......@@ -134,7 +134,7 @@ array now has:
4
```
**push operator** 在数组末尾添加一个元素。
`push`运算符在数组末尾添加一个元素。
**示例:**
......@@ -156,7 +156,7 @@ foreach $temp (@num) {
}
```
**Output:**
**输出:**
```
array now has:
......@@ -176,13 +176,13 @@ array now has:
33
```
#### 经营者:转移和不转移
#### 运算符:`shift`和`unshift`
正如我们在上面看到的那样,push 和 pop 操作符在数组末尾添加和删除。 shift 和 unshift 在数组的开头执行操作。
正如我们在上面看到的那样,`push``pop`操作符在数组末尾添加和删除。`shift``unshift`在数组的开头执行操作。
**移位运算符:**
**`shift`运算符:**
移位运算符的工作方式类似于 pop 运算符,但与 pop 运算符不同,它在数组的开头执行运算。
`shift`运算符的工作方式类似于`pop`运算符,但与`pop`运算符不同,它在数组的开头执行运算。
```
#!/usr/bin/perl
......@@ -203,7 +203,7 @@ foreach $temp (@num) {
}
```
**Output:**
**输出:**
```
$n1 is: 3
......@@ -217,9 +217,9 @@ array now has:
7
```
**unshift 运算符:**
**`unshift`运算符:**
unshift 运算符的工作方式类似于 push 运算符,但与 push 运算符不同,它在数组的开头执行运算。
`unshift`运算符的工作方式类似于`push`运算符,但与`push`运算符不同,它在数组的开头执行运算。
```
#!/usr/bin/perl
......@@ -259,9 +259,9 @@ array now has:
12
```
#### 拼接算子
#### `splice`运算符
在上一节中,我们学习了如何在数组上执行 push,pop,shift 和 unshift 操作。但是这些运算符存在限制,它们只在数组的开头或数组的末尾执行。如果我们想在数组中间执行操作怎么办?这就是拼接运算符进入画面的地方。
在上一节中,我们学习了如何在数组上执行`push``pop``shift``unshift`操作。但是这些运算符存在限制,它们只在数组的开头或数组的末尾执行。如果我们想在数组中间执行操作怎么办?这就是`splice`运算符进入画面的地方。
**语法:**
......@@ -269,15 +269,15 @@ array now has:
splice @array_name, s, l, @another_array
```
splice 运算符最多可以包含四个参数。
`splice`运算符最多可以包含四个参数。
**第一个参数**是数组名,这里我们指定我们正在执行操作的数组
**第二个参数**是起点,如上所述,你可以执行在数组中间的 opeartion。这指定了操作的起点。
**第二个参数**是起点,如上所述,你可以在数组中间执行操作。这指定了操作的起点。
**第三个参数**是长度
**第四个参数**是另一个列表或数组。
让我们举几个例子来理解这个:
#### 示例 1:拼接中只有两个参数
#### 示例 1:`splice`中只有两个参数
```
@myarray = qw(Rahul, Joe, Ajeet, Tim, Lisa);
......@@ -287,7 +287,7 @@ splice 运算符最多可以包含四个参数。
# @myvar is qw(Tim, Lisa)
```
splice 运算符的第三和第四个参数是可选的。在上面的例子中,我们只提供了两个参数,数组和起始点。与数组类似,splice 运算符的索引从 0 开始,这意味着 Ajeet 是上例中的起点。如果我们只提供两个参数,那么 splice 运算符会在起始点之后删除所有内容。
`splice`运算符的第三和第四个参数是可选的。在上面的例子中,我们只提供了两个参数,数组和起始点。与数组类似,`splice`运算符的索引从 0 开始,这意味着`Ajeet`是上例中的起点。如果我们只提供两个参数,那么`splice`运算符会在起始点之后删除所有内容。
#### 示例 2:三个参数
......@@ -301,7 +301,7 @@ splice 运算符的第三和第四个参数是可选的。在上面的例子中
# @myvar is qw(Tim)
```
#### 例 3:第四个论点
#### 例 3:第四个参数
第四个参数是另一个列表或我们要插入到数组中的数组。
......@@ -327,10 +327,9 @@ splice 运算符的第三和第四个参数是可选的。在上面的例子中
# @myvar is qw()
```
#### 反向运算符
#### `reverse`运算符
reverse 运算符将一个元素(或列表)数组作为输入,并以相反的顺序返回。
例如:
`reverse`运算符将一个元素(或列表)数组作为输入,并以相反的顺序返回。例如:
```
@myarray = 10..15; # same as (10, 11, 12, 13, 14, 15)
......@@ -345,7 +344,7 @@ reverse 运算符将一个元素(或列表)数组作为输入,并以相反
@myarray = reverse @myarray;
```
**注意:**如果你只是写下面的语句那么它就不行了。
**注意**如果你只是写下面的语句那么它就不行了。
```
reverse @myarray;
......
......@@ -2,7 +2,7 @@
> 原文: [https://beginnersbook.com/2017/05/hashes-in-perl/](https://beginnersbook.com/2017/05/hashes-in-perl/)
**哈希**是一组键值对。哈希变量以“%”符号为前缀。让我们先举一个简单的例子,然后我们将详细讨论哈希。
**哈希**是一组键值对。哈希变量以`%`符号为前缀。让我们先举一个简单的例子,然后我们将详细讨论哈希。
```
#!/usr/bin/perl
......@@ -26,17 +26,16 @@ $age{'Ajeet'}: 28
## 创建哈希
**第一种方法:**这是我们在上面的例子中看到的 -
**第一种方法**:这是我们在上面的例子中看到的:
```
%age = ('Chaitanya Singh', 29, 'Ajeet', 28, 'Lisa', 25);
```
这里'Chaitanya Singh'是键 1,29 是值 1
'Ajeet'是键 2,28 是值 2
类似'Lisa',25 是第三键值对
这里`'Chaitanya Singh'`是键 1,29 是值 1;`'Ajeet'`是键 2,28 是值 2;类似`'Lisa'`,25 是第三键值对。
**第二种方法**:这是创建哈希的**首选方式**,因为它提高了可读性。在这种方法中,我们用`=>`符号分隔每对的键和值
**第二种方法:**这是创建哈希的**首选方式**,因为它提高了可读性。在这种方法中,我们用'=>'符号分隔每对的键和值。
例如:
```
......@@ -45,9 +44,10 @@ $age{'Ajeet'}: 28
#### 有用的哈希函数:
**1)键功能:**
**1)`keys`函数:**
`keys`函数返回哈希中所有键的列表。
键功能返回哈希中所有键的列表。
**例:**
```
......@@ -58,15 +58,15 @@ my @k = keys %age;
print "Keys: @k\n";
```
**Output:**
**输出:**
```
Keys: Ajeet Chaitanya Singh Lisa
```
**2)函数:**
**2)`values`函数:**
values 函数返回散列中所有值的列表。
`values`函数返回散列中所有值的列表。
**例:**
```
......@@ -77,15 +77,16 @@ my @k = values %age;
print "Values: @k\n";
```
**Output:**
**输出:**
```
Values: 28 29 25
```
**3)每个函数:**
**3)`each`函数:**
`each`函数用于迭代哈希,它通常用于`while`循环。
每个函数用于迭代哈希,它通常用于 while 循环。
**例:**
```
......@@ -97,7 +98,7 @@ while ( ($key, $value) = each %age ) {
}
```
**Output:**
**输出:**
```
Key: Lisa, Value: 25
......
......@@ -44,33 +44,33 @@ $x = -4;
$y = 2;
$result = $x + $y;
print '+ Operator output: ' . $result . "\n";
print '+ Operator 输出: ' . $result . "\n";
$result = $x - $y;
print '- Operator output: ' . $result . "\n";
print '- Operator 输出: ' . $result . "\n";
$result = $x * $y;
print '* Operator output: ' . $result . "\n";
print '* Operator 输出: ' . $result . "\n";
$result = $x / $y;
print '/ Operator output: ' . $result . "\n";
print '/ Operator 输出: ' . $result . "\n";
$result = $x % $y;
print '% Operator output: ' . $result. "\n";
print '% Operator 输出: ' . $result. "\n";
$result = $x ** $y;
print '** Operator output: ' . $result . "\n";
print '** Operator 输出: ' . $result . "\n";
```
**输出:**
```
+ Operator output: -2
- Operator output: -6
* Operator output: -8
/ Operator output: -2
% Operator output: 0
** Operator output: 16
+ Operator 输出: -2
- Operator 输出: -6
* Operator 输出: -8
/ Operator 输出: -2
% Operator 输出: 0
** Operator 输出: 16
```
## 2)分配运算符
......@@ -95,57 +95,57 @@ $result = 10;
print "\$x= $x and \$result=$result\n";
$result = $x;
print '= Operator output: ' . $result . "\n";
print '= Operator 输出: ' . $result . "\n";
print "\$x= $x and \$result=$result\n";
$result += $x;
print '+= Operator output: ' . $result . "\n";
print '+= Operator 输出: ' . $result . "\n";
print "\$x= $x and \$result=$result\n";
$result -= $x;
print '-= Operator output: ' . $result . "\n";
print '-= Operator 输出: ' . $result . "\n";
print "\$x= $x and \$result=$result\n";
$result *= $x;
print '*= Operator output: ' . $result . "\n";
print '*= Operator 输出: ' . $result . "\n";
print "\$x= $x and \$result=$result\n";
$result /= $x;
print '/= Operator output: ' . $result . "\n";
print '/= Operator 输出: ' . $result . "\n";
print "\$x= $x and \$result=$result\n";
$result %= $x;
print '%= Operator output: ' . $result . "\n";
print '%= Operator 输出: ' . $result . "\n";
#assigning different value to $result for this operator
$result =2;
print "\$x= $x and \$result=$result\n";
$result **= $x;
print '**= Operator output: ' . $result . "\n";
print '**= Operator 输出: ' . $result . "\n";
```
**Output:**
**输出:**
```
$x= 5 and $result=10
= Operator output: 5
= Operator 输出: 5
$x= 5 and $result=5
+= Operator output: 10
+= Operator 输出: 10
$x= 5 and $result=10
-= Operator output: 5
-= Operator 输出: 5
$x= 5 and $result=5
*= Operator output: 25
*= Operator 输出: 25
$x= 5 and $result=25
/= Operator output: 5
/= Operator 输出: 5
$x= 5 and $result=5
%= Operator output: 0
%= Operator 输出: 0
$x= 5 and $result=2
**= Operator output: 32
**= Operator 输出: 32
```
## 3)自动递增和自动递减运算符
++和 -
++和
**$ x ++** 相当于$ x = $ x + 1;
**$ x-** 相当于$ x = $ x-1;
......@@ -162,7 +162,7 @@ print"Value of \$x++ is: $x\n";
print"Value of \$y-- is: $y\n";
```
**Output:**
**输出:**
```
Value of $x++ is: 101
......@@ -210,7 +210,7 @@ $result = !($x);
print"\!\$x: $result\n";
```
**Output:**
**输出:**
```
$x and $y: false
......@@ -276,7 +276,7 @@ if( $x <= $y){
}
```
**Output:**
**输出:**
```
$x and $y are not equal
......@@ -342,7 +342,7 @@ $result = $x >> 2;
print "\$x >> 2 = $result\n";
```
**Output:**
**输出:**
```
$x & $y: 2
......
......@@ -68,7 +68,7 @@ if( $num < 100 ){
}
```
**Output:**
**输出:**
```
Enter any number: 99
......
......@@ -2,7 +2,7 @@
> 原文: [https://beginnersbook.com/2017/02/installing-perl-on-windows-mac-linux-and-unix/](https://beginnersbook.com/2017/02/installing-perl-on-windows-mac-linux-and-unix/)
在大多数情况下,您已经在系统上安装了它,因为多个操作系统已预安装它。要检查系统上是否有它,可以转到命令提示符(mac 中的终端)并输入不带引号的“perl -v”。如果你的系统上有它,那么你应该看到这样的消息:
在大多数情况下,您已经在系统上安装了它,因为多个操作系统已预安装它。要检查系统上是否有它,可以转到命令提示符(mac 中的终端)并输入不带引号的`perl -v`。如果你的系统上有它,那么你应该看到这样的消息:
```
This is perl 5, version 18, subversion 2 (v5.18.2) built for darwin-thread-multi-2level
......@@ -24,7 +24,8 @@ Internet, point your browser at http://www.perl.org/, the Perl Home Page.
在 Windows 上安装 Perl 有两种​​方法(更具体地说是两种发行版)。一个是使用 ActivePerl 另一个是 StrawberryPerl,你可以选择其中之一。但是,如果你更关心你应该选择哪一个,你可以参考[这个讨论](https://stackoverflow.com/questions/3365518/should-i-choose-activeperl-or-strawberry-perl-for-windows)
**安装 Active Perl** :转到此链接: [http://www.activestate.com/activeperl](https://www.activestate.com/activeperl) 并下载安装文件,安装步骤不言自明。
**安装 Active Perl**:转到此链接: [http://www.activestate.com/activeperl](https://www.activestate.com/activeperl) 并下载安装文件,安装步骤不言自明。
**要安装 Strawberry Perl** :请访问此链接: [http://strawberryperl.com/](http://strawberryperl.com/) 并根据您的系统下载 32 位或 64 位版本。安装下载的文件。
## 在 Linux / Unix 上安装 Perl
......
......@@ -81,7 +81,7 @@ sub printparams {
&printparams("This", "is", "my", "blog");
```
**Output:**
**输出:**
```
This is my blog
......@@ -102,7 +102,7 @@ sub printparams {
&printparams("This", "is", "my", "blog");
```
**Output:**
**输出:**
```
First Parameter: This
......@@ -132,7 +132,7 @@ $num = 100;
&printparams(@array1, @array2, $num);
```
**Output:**
**输出:**
```
First Parameter: This
......@@ -160,7 +160,7 @@ sub DisplayMyHash{
DisplayMyHash(%hash);
```
**Output:**
**输出:**
```
Key is: Item1 and value is: Orange
......
......@@ -33,7 +33,7 @@ Chaitanya works for BeginnersBook
print "Welcome to\t Beginnersbook.com\n";
print 'Welcome to\t Beginnersbook.com\n';
This would produce the following output:
This would produce the following 输出:
Welcome to Beginnersbook.com
Welcome to\t Beginnersbook.com\n
```
......@@ -92,7 +92,7 @@ $msg = "Hello This is \"My blog\"";
print "$msg\n";
```
**Output:**
**输出:**
```
Hello This is "My blog"
......@@ -113,7 +113,7 @@ $mystr = $str1 . " " . $str2;
print "$mystr\n";
```
Output:
输出:
```
Cherry Coco
......@@ -129,7 +129,7 @@ $mystr = $str x 4;
print "$mystr\n";
```
Output:
输出:
```
CherryCherryCherryCherry
......@@ -153,7 +153,7 @@ my $substr2 = substr($str, 7, 11);
print "My Second substring is: $substr2\n";
```
Output:
输出:
```
My original String is: I know who you are, I will find you
......@@ -173,7 +173,7 @@ my $newstr = substr($str, 7, 11, "you are the killer");
print "My updated String is: $str\n"
```
Output:
输出:
```
My original String is: I know who you are, I will find you
......@@ -191,7 +191,7 @@ my $str = "I know who you are, I will find you";
print "length of my string is:", length($str);
```
Output:
输出:
```
length of my string is:35
......@@ -211,7 +211,7 @@ if ($str eq $str2){
}
```
Output:
输出:
```
str and str2 are same
......
# 第一个 Perl 计划
# 第一个 Perl 程序
> 原文: [https://beginnersbook.com/2017/02/first-perl-program/](https://beginnersbook.com/2017/02/first-perl-program/)
在本教程中,我们将学习如何编写第一个 perl 程序并在各种操作系统上运行它。
## 第一个 Perl 计划:Hello World
## 第一个 Perl 程序:Hello World
这是一个打印 Hello World 的简单 perl 程序!屏幕上。
这是一个打印`Hello World`的简单 perl 程序!屏幕上。
```
#!/usr/bin/perl
......@@ -14,17 +14,17 @@
print "Hello World!!";
```
这里第一条指令**#!/ usr / bin / perl** 告诉操作系统使用位于/ usr / bin / perl 的解释器运行该程序。
这里第一条指令`#!/usr/bin/perl`告诉操作系统使用位于`/usr/bin/perl`的解释器运行该程序。
正如我在 perl 介绍中解释的那样 perl 是一种使用普通英语的高级语言,问题是机器不能理解这种高级语言,因此为了使这个程序可以被机器理解,我们必须将它解释为机器语言。解释器是将该程序解释为机器语言的原因。
第二条指令**#这是一条评论**是一条评论,无论你在哈希(#)之后写的是什么都被认为是评论
第二条指令`#this is a comment`是一条注释,无论你在哈希(`#`)之后写的是什么都被认为是注释
第三条指令**打印“Hello World !!”;** 打印 Hello World !!屏幕上。注意指令末尾的分号(;),你必须在每条指令的末尾加一个分号,这告诉解释器指令已经完成。
第三条指令`print "Hello World!!";`打印`Hello World!!`屏幕上。注意指令末尾的分号(`;`),你必须在每条指令的末尾加一个分号,这告诉解释器指令已经完成。
## 如何运行 perl 程序?
为了运行上面的程序,将代码复制到文本编辑器,如 Windows 的记事本,mac 的 textedit 等,并使用.pl 扩展名保存文件。假设我们将文件保存为 firstprogram.pl。您可以使用任何名称保存程序。 Perl 不会强迫您使用特殊类型的名称,您可以随意使用您想要的任何名称。
为了运行上面的程序,将代码复制到文本编辑器,如 Windows 的记事本,mac 的 textedit 等,并使用`.pl`扩展名保存文件。假设我们将文件保存为`firstprogram.pl`。您可以使用任何名称保存程序。 Perl 不会强迫您使用特殊类型的名称,您可以随意使用您想要的任何名称。
### 在 Windows 上
......@@ -47,7 +47,7 @@ chmod +x firstprogram.pl
**如何在脚本中指定 Perl 的版本?**
在某些情况下,我们要指定 Perl 的版本以使我们的脚本正常工作。例如,在 perl 5.10 或更高版本中,您可以使用“say”代替“print”。这是 **Perl 5.10** 中引入的新功能。
在某些情况下,我们要指定 Perl 的版本以使我们的脚本正常工作。例如,在 perl 5.10 或更高版本中,您可以使用`say`代替`print`。这是 **Perl 5.10** 中引入的新功能。
```
#!/usr/bin/perl
......@@ -62,5 +62,6 @@ use 5.010;
say "Hello World!!";
```
**的帮助下使用**语句我们指定了 Perl 的版本,这个程序只能在 Perl 5.10 或更高版本中使用。
**`use`语句的帮助下**我们指定了 Perl 的版本,这个程序只能在 Perl 5.10 或更高版本中使用。
注意:Perl 期望三位数的子版本,这就是我们提到 5.010 的原因,如果你使用 5.10 而不是 Perl 认为提到的版本是 5.100。同样,如果要指定版本 5.11,则在程序中使用 5.011 而不是 5.11。
\ No newline at end of file
......@@ -47,7 +47,7 @@ print "\$name: $name\n";
print "\$msg: $msg\n";
```
Output:
输出:
```
$name: Negan
......@@ -65,7 +65,7 @@ my $say = 'I do like to use backslash \\';
print "$say\n";
```
Output:
输出:
```
I do like to use backslash \
......@@ -84,7 +84,7 @@ my $say = "I like to watch \"The Walking Dead\"";
print "$say\n";
```
Output:
输出:
```
I like to watch "The Walking Dead"
......@@ -101,7 +101,7 @@ my $name = 'Chaitanya';
print qq(My name is "$name" and I like brackets ()\n);
```
Output:
输出:
```
My name is "Chaitanya" and I like brackets ()
......@@ -122,7 +122,7 @@ my $name = 'Chaitanya';
print q(My name is "$name" and I like brackets ()\n);
```
Output:
输出:
```
My name is "$name" and I like brackets ()\n
......
......@@ -2,13 +2,13 @@
> 原文: [https://beginnersbook.com/2017/02/perl-syntax/](https://beginnersbook.com/2017/02/perl-syntax/)
我们在[上一篇教程中熟悉了 Perl 的基础知识:第一个 perl 程序](https://beginnersbook.com/2017/02/first-perl-program/)。在本教程中,我们将了解有关 Perl 语法和命名约定的几个要点。
我们在上一篇教程[“第一个 perl 程序”](https://beginnersbook.com/2017/02/first-perl-program/)中熟悉了 Perl 的基础知识。在本教程中,我们将了解有关 Perl 语法和命名约定的几个要点。
### Perl 文件命名约定
Perl 文件名可以包含数字,符号,字母和下划线(_),但文件名中不允许使用空格。例如 hello_world.pl 是一个有效的文件名,但是 hello world.pl 是一个无效的文件名。
Perl 文件名可以包含数字,符号,字母和下划线(`_`),但文件名中不允许使用空格。例如`hello_world.pl`是一个有效的文件名,但是`hello world.pl`是一个无效的文件名。
Perl 文件可以使用.pl 或.PL 扩展名保存。
Perl 文件可以使用`.pl``.PL`扩展名保存。
### Perl 中单引号和双引号之间的区别
......@@ -28,7 +28,7 @@ Welcome to Beginnersbook.com
Welcome to\t Beginnersbook.com\n
```
您可以清楚地看到双引号内插转义序列\ t”和“\ n”的区别,但是单引号没有。
您可以清楚地看到双引号内插转义序列`\t``\n`的区别,但是单引号没有。
另一个例子:
......@@ -50,22 +50,24 @@ Website Name: $website\n
#### 使用单引号
您可能正在考虑避免在 perl 程序中使用单引号,但在某些情况下您可能希望使用单引号。
例如如果要将电子邮件地址存储在变量中,那么双引号会引发错误,在这种情况下需要使用单引号。对于例如
例如如果要将电子邮件地址存储在变量中,那么双引号会引发错误,在这种情况下需要使用单引号。例如
$ email =“ [[email protected]](/cdn-cgi/l/email-protection) ”;会抛出错误
$ email =' [[email protected]](/cdn-cgi/l/email-protection) ';会工作得很好。
```
$ email = "xyz@gmail.com"; # 会抛出错误
$ email = 'xyz@gmail.com'; # 会工作得很好
```
### Perl 中的反斜杠
反斜杠可以执行以下两个任务之一:
1)它消除了跟随它的字符的特殊含义。对于例如打印“\ $ myvar”;会产生$ myvar 输出而不是变量 myvar 值,因为在$之前的反斜杠(\)消除了$
的特殊含义 2)它是反斜杠或转义序列的开始。对于例如\ n 是用于换行的转义序列
1)它消除了跟随它的字符的特殊含义。对于例如打印`\$myvar`会产生`$myvar`输出而不是变量`myvar`值,因为在`$`之前的反斜杠(`\`)消除了`$`的特殊含义
2)它是反斜杠或转义序列的开始。对于例如`\n`是用于换行的转义序列
#### 有什么用?
相信我,你会在 perl 中开发应用时经常使用它。假设您要打印包含双引号的字符串。对于例如如果我想打印:你好这是“我的博客”然后我需要使用以下逻辑:
相信我,你会在 perl 中开发应用时经常使用它。假设您要打印包含双引号的字符串。对于例如如果我想打印:`Hello This is "My blog"`然后我需要使用以下逻辑:
```
#!/usr/bin/perl
......@@ -74,7 +76,7 @@ $msg = "Hello This is \"My blog\"";
print "$msg\n";
```
**Output:**
**输出:**
```
Hello This is "My blog"
......
......@@ -2,9 +2,9 @@
> 原文: [https://beginnersbook.com/2017/02/data-types-in-perl/](https://beginnersbook.com/2017/02/data-types-in-perl/)
Perl 有三种数据类型:**标量****标量数组****哈希**(也称为关联数组,字典或地图)。在 perl 中,我们不需要指定数据类型,解释器会根据数据的上下文自动选择它。
Perl 有三种数据类型:**标量****标量数组****哈希**(也称为关联数组,字典或映射)。在 perl 中,我们不需要指定数据类型,解释器会根据数据的上下文自动选择它。
对于例如在下面的代码中,我将一个整数和一个字符串分配给两个不同的变量,而不指定任何类型。解释器将选择 age 作为整数类型,并根据分配给它们的数据将其命名为字符串类型。
对于例如在下面的代码中,我将一个整数和一个字符串分配给两个不同的变量,而不指定任何类型。解释器将选择`age`作为整数类型,并根据分配给它们的数据将其命名为字符串类型。
```
#!/usr/bin/perl
......@@ -14,7 +14,8 @@ $name="Chaitanya";
#### 标量
标量是单个数据单元。它可以是数字,浮点数,字符,字符串等。在 perl 中,它们以美元符号($)为前缀。详细阅读 [](https://beginnersbook.com/2017/05/scalars-in-perl/)
标量是单个数据单元。它可以是数字,浮点数,字符,字符串等。在 perl 中,它们以美元符号(`$`)为前缀。详细阅读[这里](https://beginnersbook.com/2017/05/scalars-in-perl/)
例如:
```
......@@ -26,7 +27,7 @@ $str2="hello";
#### 数组
它们是有序的标量列表,前缀为“@”符号。索引从 0 开始,这意味着访问数组的第一个元素,我们需要使用索引值为 0(零)。例如。
它们是有序的标量列表,前缀为`@`符号。索引从 0 开始,这意味着访问数组的第一个元素,我们需要使用索引值为 0(零)。例如。
```
#!/usr/bin/perl
......@@ -36,13 +37,15 @@ print "\$pincode[0] = $pincode[0]\n";
**输出:**
密码[0] = 301019
```
pincode[0] = 301019
```
如果您想知道打印指令中使用的反斜杠(\),它用于避免首次出现 pincode [0]的插值。您可以在此处阅读有关数组[的更多信息](https://beginnersbook.com/2017/05/perl-lists-and-arrays/)
如果您想知道打印指令中使用的反斜杠(`\`),它用于避免首次出现`pincode [0]`的插值。您可以[在此处阅读有关数组的更多信息](https://beginnersbook.com/2017/05/perl-lists-and-arrays/)
#### 哈希
它们是无序的键值对组。它们以百分号(%)为前缀。
它们是无序的键值对组。它们以百分号(`%`)为前缀。
```
#!/usr/bin/perl
......@@ -50,5 +53,6 @@ print "\$pincode[0] = $pincode[0]\n";
%ages = ('Chaitanya', 29, 'Ajeet', 28, 'Tom', 40);
```
这里“年龄”是具有键值对的散列。其中 key 是名称,value 是 age。要访问 Ajeet 的年龄,我们使用$ age {'Ajeet'}指令。
在这里了解更多关于哈希的例子[](https://beginnersbook.com/2017/05/hashes-in-perl/)
\ No newline at end of file
这里`%ages`是具有键值对的散列。其中键是名称,值是年龄。要访问`Ajeet`的年龄,我们使用`$age{'Ajeet'}`指令。
[在这里了解更多关于哈希的例子](https://beginnersbook.com/2017/05/hashes-in-perl/)
\ No newline at end of file
......@@ -6,7 +6,7 @@ perl 中有三种类型的变量:标量,标量和散列数组。让我们在
### 标量
[Scalars](https://beginnersbook.com/2017/05/scalars-in-perl/) 是单一数据单元。标量可以是整数,浮点数,字符串等。标量变量以“$”符号为前缀。让我们看看下面的 perl 脚本,其中我们有三个标量变量。
[标量](https://beginnersbook.com/2017/05/scalars-in-perl/)是单一数据单元。标量可以是整数,浮点数,字符串等。标量变量以`$`符号为前缀。让我们看看下面的 perl 脚本,其中我们有三个标量变量。
```
#!/usr/bin/perl
......@@ -35,7 +35,7 @@ Height: 180.88
### 数组
[数组](https://beginnersbook.com/2017/05/perl-lists-and-arrays/)是标量的有序列表,数组变量的前缀为“@”符号,如下例所示:
[数组](https://beginnersbook.com/2017/05/perl-lists-and-arrays/)是标量的有序列表,数组变量的前缀为`@`符号,如下例所示:
```
#!/usr/bin/perl
......@@ -48,7 +48,7 @@ print "\$friends[2] = $friends[2]\n";
print "\$friends[3] = $friends[3]\n";
```
**Output:**
**输出:**
```
$friends[0] = Ajeet
......@@ -59,7 +59,7 @@ $friends[3] = Dhruv
### 哈希(也称为关联数组)
[哈希](https://beginnersbook.com/2017/05/hashes-in-perl/)是一组键值对。哈希变量以“%”符号为前缀。让我们看看下面的例子:
[哈希](https://beginnersbook.com/2017/05/hashes-in-perl/)是一组键值对。哈希变量以`%`符号为前缀。让我们看看下面的例子:
```
#!/usr/bin/perl
......@@ -71,7 +71,7 @@ print "\$age{'Chaitanya Singh'}: $age{'Chaitanya Singh'}\n";
print "\$age{'Ajeet'}: $age{'Ajeet'}\n";
```
**Output:**
**输出:**
```
$age{'Lisa'}: 25
......
# my keyword - Perl 中的本地和全局变量
# `my`关键字 - Perl 中的本地和全局变量
> 原文: [https://beginnersbook.com/2017/05/my-keyword-local-and-global-variables-in-perl/](https://beginnersbook.com/2017/05/my-keyword-local-and-global-variables-in-perl/)
......@@ -8,7 +8,7 @@
局部变量范围是局部的,它存在于这两个花括号(通常称为代码块)之间,在该块之外这个变量不存在。这些变量也称为**词汇变量**
这些变量可以在任何代码块中使用,它可以在任何控制结构块中,如 if,if-else 等,或任何循环块,如 for,while,do-while 等或任何子例程的块,它甚至可以出现在匿名区块中。例如 -
这些变量可以在任何代码块中使用,它可以在任何控制结构块中,如`if``if-else`等,或任何循环块,如`for``while``do-while`等或任何子例程的块,它甚至可以出现在匿名区块中。例如:
```
#!/usr/bin/perl
......@@ -21,7 +21,7 @@ if (1<2)
}
```
我知道这个例子没有任何意义,但我的观点是向您展示局部变量在程序中的外观。在上面的程序变量中,$ age 在 if 中被声明,因此这个变量只对这个块是本地的。如果我们尝试在 if 体外访问此变量,我们会收到错误。让我们看看这个在行动,运行以下程序。
我知道这个例子没有任何意义,但我的观点是向您展示局部变量在程序中的外观。在上面的程序变量中,`$age``if`中被声明,因此这个变量只对这个块是本地的。如果我们尝试在`if`体外访问此变量,我们会收到错误。让我们看看这个在行动,运行以下程序。
```
#!/usr/bin/perl
......@@ -44,11 +44,11 @@ Execution of demo.pl aborted due to compilation errors.
**注意:**
1)使用我的关键字声明局部变量,如上面的程序所示。
1)使用`my`关键字声明局部变量,如上面的程序所示。
2)由于局部变量的范围仅限于块,因此可以在不同的块中使用相同名称的局部变量而不会发生任何冲突。
3)在整个程序中可以访问在编译指示之后的程序开头使用 my 关键字声明的变量。例如,程序中可以访问此程序中的变量$ age
3)在整个程序中可以访问在编译指示之后的程序开头使用`my`关键字声明的变量。例如,程序中可以访问此程序中的变量`$age`
```
#!/usr/bin/perl
......@@ -62,27 +62,27 @@ if (1<2)
print "$age\n";
```
**Output:**
**输出:**
```
29
29
```
**关于我的关键字很少有重要的事情:**
**关于`my`关键字很少有重要的事情:**
直到现在,我们已经了解到我的关键字用于声明局部变量,让我们看一下关键词的重点。
直到现在,我们已经了解到`my`关键字用于声明局部变量,让我们看一下关键词的重点。
1)使用 my 关键字声明多个变量时,必须使用括号,否则只声明一个局部变量。例如,
1)使用`my`关键字声明多个变量时,必须使用括号,否则只声明一个局部变量。例如,
```
my $num1, $num2; # This would not declare $num2.
my ($num1, $num2); # This is the correct way. It declares both
```
2)除了变量之外,您还可以使用 my 关键字声明本地数组和本地哈希。
2)除了变量之外,您还可以使用`my`关键字声明本地数组和本地哈希。
例如,此代码声明本地数组@friends
例如,此代码声明本地数组`@friends`
```
my @friends;
......@@ -90,7 +90,7 @@ my @friends;
## 全局变量:
这不需要任何介绍,因为我们在我们的程序中使用它们,因为我们启动了 perl 教程。在没有声明的情况下直接使用的所有变量(使用我的关键字)都可以从程序的每个部分访问。例如,
这不需要任何介绍,因为我们在我们的程序中使用它们,因为我们启动了 perl 教程。在没有声明的情况下直接使用的所有变量(使用`my`关键字)都可以从程序的每个部分访问。例如,
```
#!/usr/bin/perl
......@@ -103,11 +103,11 @@ if (1<2)
print "$age\n"; #accessible outside the block
```
**Output:**
**输出:**
```
29
29
```
**注意:**在这个程序中,我们删除了 use strict pragma,因为它强制我们在使用之前使用 my 关键字声明所有变量。
\ No newline at end of file
**注意**:在这个程序中,我们删除了`use strict pragma`,因为它强制我们在使用之前使用`my`关键字声明所有变量。
\ No newline at end of file
......@@ -14,12 +14,12 @@ Perl 中的标量数据被认为是单数,它可以是数字或字符串。我
print "Welcome to\t Beginnersbook.com\n";
print 'Welcome to\t Beginnersbook.com\n';
This would produce the following output:
This would produce the following 输出:
Welcome to Beginnersbook.com
Welcome to\t Beginnersbook.com\n
```
您可以清楚地看到双引号内插转义序列\ t”和“\ n”的区别,但是单引号没有。
您可以清楚地看到双引号内插转义序列`\t``\n`的区别,但是单引号没有。
**另一个例子:**
......@@ -46,21 +46,22 @@ Website Name: $website\n
例如如果要将电子邮件地址存储在变量中,那么双引号会引发错误,在这种情况下需要使用单引号。对于例如
```
$email = "[email protected]"; would throw an error
$email = "xyz@gmail.com"; # would throw an error
$email = '[email protected]'; would work fine.
$email = 'xyz@gmail.com'; # would work fine.
```
## Perl 中的反斜杠
反斜杠可以执行以下两个任务之一:
1)它消除了跟随它的字符的特殊含义。对于例如打印“\ $ myvar”;会产生$ myvar 输出而不是变量 myvar 值,因为在$之前的反斜杠(\)消除了$
的特殊含义 2)它是反斜杠或转义序列的开始。对于例如\ n 是用于换行的转义序列
1)它消除了跟随它的字符的特殊含义。对于例如打印`\$myvar`会产生`$myvar`输出而不是变量`myvar`值,因为在`$`之前的反斜杠(`\`)消除了`$`的特殊含义
2)它是反斜杠或转义序列的开始。对于例如`\n`是用于换行的转义序列
#### 有什么用?
相信我,你会在 perl 中开发应用时经常使用它。假设您要打印包含双引号的字符串。对于例如如果我想打印:你好这是“我的博客”然后我需要使用以下逻辑:
相信我,你会在 perl 中开发应用时经常使用它。假设您要打印包含双引号的字符串。对于例如如果我想打印`Hello This is "My blog"`然后我需要使用以下逻辑:
```
#!/usr/bin/perl
......@@ -69,7 +70,7 @@ $msg = "Hello This is \"My blog\"";
print "$msg\n";
```
**Output:**
**输出:**
```
Hello This is "My blog"
......@@ -79,7 +80,7 @@ Hello This is "My blog"
#### 级联:
您可以使用点()运算符连接字符串。例如:
您可以使用点(`.`)运算符连接字符串。例如:
```
"Hello"."Chaitanya" # Equivalent to "HelloChaitanya"
......@@ -88,10 +89,11 @@ Hello This is "My blog"
#### 字符串重复:
语法:MyString x MyNumber
这将通过“MyNumber”次重复字符串“MyString”。
语法:`MyString x MyNumber`
这里 x 应该是小写的。
这将通过`MyNumber`次重复字符串`"MyString"`。
这里`x`应该是小写的。
例如:
......@@ -103,11 +105,12 @@ Hello This is "My blog"
在第三个例子中,2.7 被认为是 2,这里没有数字四舍五入。
**注意:** Perl 将 x 运算符之前的部分视为字符串,将 x 之后的部分视为数字。换句话说,您可以说左操作数被视为字符串而右操作数被视为数字。
**注意:** Perl 将`x`运算符之前的部分视为字符串,将`x`之后的部分视为数字。换句话说,您可以说左操作数被视为字符串而右操作数被视为数字。
例如:
```
8 x 3 # Same as "8" x 3 or "888"
```
使用 x 运算符时必须记住这一点,以避免混淆。 8 x 3 不是 24 而是“888”。
\ No newline at end of file
使用`x`运算符时必须记住这一点,以避免混淆。`8 x 3`不是 24 而是`"888"`
\ No newline at end of file
# 在 Perl 中使用严格和使用警告
# Perl 中的`use strict`和`use warnings`
> 原文: [https://beginnersbook.com/2017/05/use-strict-and-use-warnings-in-perl/](https://beginnersbook.com/2017/05/use-strict-and-use-warnings-in-perl/)
......@@ -14,9 +14,9 @@ use warnings;
开始吧。
## 用严格
## `use strict`
use strict 语句称为 pragma,它可以放在脚本的开头,如下所示:
`use strict`语句称为`pragma`,它可以放在脚本的开头,如下所示:
```
#!/usr/local/bin/perl
......@@ -25,12 +25,13 @@ use strict;
**它做了什么?**
它会强制您正确编码以使您的程序不易出错。例如:它强制您在使用它们之前声明变量。您可以使用“my”关键字声明变量。 “my”关键字将变量的范围限制为 local。它使代码更易读,更不容易出错。
如果你没有使用我的关键字声明变量,那么创建的变量将是全局的,你应该避免,将变量的范围缩小到需要它的位置是一个很好的编程习惯。
它会强制您正确编码以使您的程序不易出错。例如:它强制您在使用它们之前声明变量。您可以使用`my`关键字声明变量。`my`关键字将变量的范围限制为局部。它使代码更易读,更不容易出错。
如果你没有使用`my`关键字声明变量,那么创建的变量将是全局的,你应该避免,将变量的范围缩小到需要它的位置是一个很好的编程习惯。
#### 例:
如果使用“use strict”但不声明变量。
如果使用`use strict`但不声明变量。
```
#!/usr/local/bin/perl
......@@ -47,7 +48,7 @@ Global symbol "$s" requires explicit package name at st.pl line 4.
Execution of st.pl aborted due to compilation errors.
```
要避免错误,您必须使用 my 关键字声明变量。
要避免错误,您必须使用`my`关键字声明变量。
```
#!/usr/local/bin/perl
......@@ -64,11 +65,11 @@ Hello!
同样,您需要在使用它们之前声明数组和哈希值。
**注意:**从 Perl 5.12 开始,隐式启用此编译指示,这意味着如果您使用的是 Perl 5.12 或更高版本,则无需使用行**使用 strict** 作为编译指示默认情况下启用。
**注意:**从 Perl 5.12 开始,隐式启用此编译指令,这意味着如果您使用的是 Perl 5.12 或更高版本,则无需使用`use strict`作为编译指令,它默认情况下启用。
## 使用警告
## `use warnings`
这是另一个 pragma,它们一起使用如下:
这是另一个`pragma`,它们一起使用如下:
```
#!/usr/local/bin/perl
......@@ -76,7 +77,7 @@ use strict;
use warnings;
```
**注意:**使用警告 pragma 在 Perl 5.6 中引入,所以如果你使用的是 Perl 5.6 或更高版本,你就可以了。如果您使用的是旧版本,可以打开如下警告:将-w 放在'shebang'行。
**注意**`use warnings pragm`在 Perl 5.6 中引入,所以如果你使用的是 Perl 5.6 或更高版本,就可以了。如果您使用的是旧版本,可以打开如下警告:将`-w`放在`shebang`行。
```
#!/usr/local/bin/perl -w
......@@ -84,12 +85,12 @@ use warnings;
即使在 Perl 5.6 或更高版本上,这也适用于任何地方。
**“使用警告”有什么用?**
**`use warnings`有什么用?**
它可以帮助您找到打字错误,它会在您看到程序出错时向您发出警告。它可以帮助您更快地找到程序中的错误。
**注意:**这里要注意的最重要的一点是“use strict”会在程序发现错误时中止程序的执行。另一方面,使用警告只会为您提供警告,它不会中止执行。
**注意:**这里要注意的最重要的一点是`use strict`会在程序发现错误时中止程序的执行。另一方面,使用警告只会为您提供警告,它不会中止执行。
**结论:**
你应该总是在你的程序中使用这两个 pragma,因为它是一个很好的编程习惯。
\ No newline at end of file
你应该总是在你的程序中使用这两个`pragma`,因为它是一个很好的编程习惯。
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册