当前位置:网站首页>Brief introduction of Perl language
Brief introduction of Perl language
2022-07-23 19:08:00 【qq_ forty-four million nine hundred and eighty-five thousand si】
1.Hello,World
#!/usr/bin/perl -w
print ( "hello,world!\n" );
#print "hello,world!\n";
explain :
(1) The first line specifies the interpreter ,-w Parameter indicates prompt warning ( Or use use strict command , perform More stringent inspection );
(2) The second line outputs hello,world!;
(3) If you get used to it c The function of ,print Parameters of can be bracketed ;
(4) The third line is the comment , Annotate with # Lead ;
(5) If you get used to it shell The way ,print Parameters of can be without parentheses ; (6) Escape characters can be used in double quotation marks ;
You might as well call the file helloworld.pm
The execution method of the program is :
(1)perl helloworld.pm
(2)chmod 755 helloworld.pm && ./helloworld.pm
2. Constant
2.1 Numbers
(1)Perl Internal general “ Double precision floating point ” Save numbers and perform operations ;
(2)0377=> octal ;0xFF=> Hexadecimal ;
2.2 character string
(1) Single quotation marks denote strings , No escape ;
(2) Double quotes represent strings , Escape and explain variables ;
2.3 String Operators
(1) Splicing operators :“.”=> String concatenation ;
(2) Repeat operator :“x”=> A string repeats many times ;
#!/usr/bin/perl -w
print ( "hello," . "world!\n" );
print ( "hello " x 3);
The output is :
hello,world!
hello hello hello
Finally, let me make a point ,Perl It's a weakly typed language , Strings and numbers will be converted to each other , This and php equally .
3. Variable
(1) Variables to $ start , Followed by an identifier ;
(2) How to get user input with variables ?
Use , It gets user input ( It usually ends with a newline ), have access to chomp Remove line breaks at the end .
#!/usr/bin/perl -w
$count = 0;
while ( $count <10)
{
chomp ( $input = );
print ( $input );
$count ++;
}
(3) Variable not defined
Undefined variables are assigned undef value , It's neither a number , It's not a string ;
It may be regarded as a number 0 Use ;
Use define Function can know whether a variable is defined ;
#!/usr/bin/perl -w
$var = undef ;
print ( $var );
if ( defined ( $var ))
{
print ( "defined!\n" );
}
else
{
print ( "undefined!\n" );
}
$var ++;
print ( $var );
Its output is :
Use of uninitialized value in print at undef.pm line 3.
undefined!
(4) Scope of variable
my and our You can specify the scope of the variable
my Specify as local scope ;
our Specify as global scope ( The default is our);
#!/usr/bin/perl -w
our $g_one = "global_one\n" ;
$g_two = "global_two\n" ;
{
my $local_one = "local_one\n" ;
print ( $g_one );
print ( $g_two );
print ( $local_one );
}
print ( $g_one );
print ( $g_two );
print ( $local_one );
Output is :
global_one
global_two
local_one
global_one
global_two
Use of uninitialized value in print at our_my.pm line 13.
4. Arrays and lists
4.1 Array
and c The array usage of is very similar :
$array[0]=”a0″;
$array[1]=”a1″;
$array[2]=”a2″;
4.2 list
A series of values in parentheses , Composition list :
(1, 2, 3)
(“hello”, 4)
(“hello”, “world”, “yes”, “no”)
qw(hello world yes no)
(1..10)
explain :
(1) first line , The list element is 1,2,3;
(2) The second line , The list element is a string , A number ;
(3) The third line , The list element is 4 A string , Lots of quotation marks and commas ;
(4) In the fourth row ,wq The operator , Used to create a string list , Instead of entering so many quotes and commas , The effect is the same (3);
(5) Range operators “…”, Represents a range , Add one continuously from left to right .
Assignment of the list :
($v1, $v2, $v3) = qw(yes i am);
References to the entire list ,@ The operator :
@list = qw(yes i am);
@none = ();
@huge = (1..5);
@stuff = (@list, @none, @huge);
pop and push The operator :
(1)pop Pop up the elements at the end of the list ;
(2)push Push elements into the end of the list ;
shift and unshift The operator :
(1)shift Remove the first element of the list ;
(2)unshift Push elements into the top of the list ;
Output of list :
(1) List output , Only output the list , No spaces between elements ;
(2) String output of the list , Output list , Add spaces between elements ;
(3)foreach Control results , You can get each element in the list in turn
#!/usr/bin/perl -w
@list = qw(yes i am);
@none = ();
@huge = (1..5);
@stuff = ( @list , @none , @huge );
$pop_last = pop ( @stuff );
print ( $pop_last );
push ( @stuff , "hello" );
$shift_first = shift ( @stuff );
print ( $shift_first );
unshift ( @stuff , "world" );
print ( @stuff );
print ( "@stuff" );
$element = undef ;
foreach $element ( @stuff )
{
print ( "$element!\n" );
}
Output :
5
yes
worldiam1234hello
world i am 1 2 3 4 hello
i!
am!
1!
2!
3!
4!
hello!
**4.3 The default variable ∗ ∗ Where variables should be used , If you omit variables , The default variable will be used _** Where variables should be used , If you omit variables , The default variable will be used ∗∗ Where variables should be used , If you omit variables , The default variable will be used _.
#!/usr/bin/perl -w
$_ = "hello,world!" ;
print ();
The output is :
hello,world!
5. function
5.1 Function definition and call
(1) The keyword defining the function is sub;
(2) The keyword of function call is &;
(3) You can use return Show return , You can also use a number to implicitly return
#!/usr/bin/perl
$num =0;
sub sumAdd
{
$num +=1;
print ( "$num\n" );
#return $num; # Show return
$num ; # Implicit return
}
&sumAdd;
&sumAdd;
print (&sumAdd);
The execution result is :
1
2
3
3
5.2 The parameters of the function
(1) When calling a function, you can take the parameter list directly ;
(2) The function definition uses “ The default variable ” Get parameter list ;
#!/usr/bin/perl -w
sub max
{
return ( $_ [0]> $_ [1]? $_ [0]: $_ [1]);
}
$big =20;
$small =10;
print (&max( $big , $small ));
Output is :
20
6. Program input and output
Standard input has been described above , Here are several other common inputs and outputs .
6.1Unix Tool input and output :
Offer something similar to Unix Function of tool input and output , The functions it provides can be very good with cat/sed/awk/sort/grep And other tools .
#!/usr/bin/perl -w
use strict;
while (<>)
{
chomp ();
print ( "$_!!!\n" );
}
The function of the script , Is to add !!!, It uses default variables in several places .
You might as well call the file diamond.pm
Might as well set hello.txt There are three lines of data in , Namely 111,222,333
Execution steps :
(1)chmod 755 diamond.pm
(2)cat hello.txt | ./diamond.pm | cat
Output results :
111!!!
222!!!
333!!!
6.2 Format output :printf
#!/usr/bin/perl -w
$int_var = 2011;
$str_var = "hello,world" ;
printf ( "%d\n%s\n" , $int_var , $str_var );
The output is :
2011
hello,world
6.3 File input and output
Perl Retain the 6 File handles :STDIN/STDOUT/STDERR/DATA/ARGV/ARGVOUT
Above 6.1 The program in can be executed like this :
./diamond.pm out.txt
The output will be redirected to out.txt in
Input and output to file , Need to open 、 Use 、 Close the file handle
(1) Open the file handle :
open LOG, “>>log.txt”;
open CONFIG, ” (2) Close the file handle :
close LOG;
close CONFIG;
(3) Use file handles :
print LOG (“hello,world!\n”);
print STDERR (“yes i am!\n”);
while()
{
chomp();
…
}
You can also use select keyword :
print(“to stdout1!”);
select LOG;
print(“to log1″);
print(“to log2″);
select STDOUT;
print(“to stdout2!”);
#!/usr/bin/perl -w
$input_file = "hello.txt" ;
$output_file = "out.txt" ;
open INPUT, "<$input_file" ; open OUTPUT, ">>$output_file" ;
while (
<input type= "text" >)
{
chomp ();
print OUTPUT ( "$_!!!\n" );
}
close OUTPUT;
close INPUT;
explain : Its functions are the same as those before diamond.pm It's the same .
7. Hash hash
7.1 Hash access
$key=”am”;
$hash_one{
“yes”} = 3;
$hash_one{
“i”} = 1;
$hash_one{
$key} = 5;
print($hash_one{
“am”});
$value = $hash_one{
“hello”}; # undef
7.2 Hash reference
To reference the entire hash , Use % The operator .
%hash_one = (“hello”,5,”world”,5);
print ($hash_one{
“hello”});
%hash_two = %hash_one;
7.3 Unbinding hash
Hash can be converted into a list of key values , It is called the unbinding of hash , The order of keys is not guaranteed after conversion , But the value must be after the key .
#!/usr/bin/perl -w
%hash_one = ( "hello" ,5, "world" ,5);
$hash_one {
"yes" } = 3;
$hash_one {
"i" } = 1;
$hash_one {
"am" } = 2;
@array_one = %hash_one ;
print ( $hash_one {
"hello" });
print ( "@array_one" );
The output is :
5
yes 3 am 2 hello 5 world 5 i 1
7.4 Inversion of hash
Establish the reverse hash of the key corresponding to the value .
%hash_reverse = reverse(%hash_one);
It works only when the key values correspond one by one , Otherwise, unexpected coverage will occur .
7.5 Aesthetic assignment of hash
The aesthetic assignment of hash uses => Symbol .
%hash_one = (“hello”,5,”world”,5,”yes”,3,”i”,1,”am”,2);
The above assignment method is easy to make mistakes , Especially when the key values are strings .
%hash_one = (
“hello” => 5,
“world” => 5,
“yes” => 3,
“i” => 1,
“am” => 2,
);
Aesthetic assignment , Does it look more beautiful , It's easier to distinguish the key value of hash .
7.6 Hash traversal
(1)keys and values Function can return a list of all keys and values , But the order in the list is not guaranteed .
@k = keys(%hash_one);
@v = values(%hash_one);
(2)each Function can traverse hash one by one , Return key value pair , Well suited to while Equal cycle ;
while(($key, $value) = each(%hash_one))
{
…
}
Sample code :
#!/usr/bin/perl -w
%hash_one = (
"hello" => 5,
"world" => 5,
"yes" => 3,
"i" => 1,
"am" => 2,
);
@k = keys ( %hash_one );
@v = values ( %hash_one );
print ( "@k\n" );
print ( "@v\n" );
$key = undef ;
$value = undef ;
while (( $key , $value ) = each ( %hash_one ))
{
print ( "$key=>$value\n" );
}
The output is :
yes am hello world i
3 2 5 5 1
yes=>3
am=>2
hello=>5
world=>5
i=>1
7.7 Hash query and deletion
(1) Query whether a key exists , Use exists function ;
(2) Delete a key , Use delete function ;
#!/usr/bin/perl -w
%hash_one =(
"yes" => 3,
"i" => 1,
"am" => 2,
);
delete ( $hash_one {
"yes" });
if ( exists ( $hash_one {
"yes" }))
{
print ( $hash_one {
"yes" });
}
The result is nothing output .
8. Process control ( This section can be skipped , They are all fancy usages )
In addition to the commonly used in various languages if/esle,for,while Other than process control ,Perl There are also some special control statements , More human .
(1)unless Control structure
The effect is similar to if not, Inefficiency increases , Just make the expression more natural , The code is easier to understand .
(2)until Control structure
The effect is similar to while not
(3) Conditional modification
The judgment condition can be written directly after the sentence , To increase readability (habadog notes : This is bullshit ).
print (“$n”) if $n < 0; $i *= 2 until $i > 1024;
&sumAdd($_) foreach @num_list;
(4) Bare control structure
There is only one curly bracket structure , It is often used to limit the scope , It is common in all languages .
{
$a = 1;
…
}
$a It doesn't work
(5)last Control structure
amount to c Medium break, Terminate the loop immediately ;
(6)next Control structure
amount to c Medium continue, Start the next cycle immediately ;
(7)redo Control structure
… Unique , Restart this cycle ;
while(1)
{
Jump here
print (“hello”);
redo;
}
9. Advanced features
magical Perl And regular 、module、 file 、 character string 、 Smart matching 、 Process management 、 Thread support and other advanced features , It's not introduced in the introductory manual .
If everyone likes , The manual of the above features will be released later .
边栏推荐
- [2018] [paper notes] graphene FET and [2] - Preparation and transfer of graphene
- GVIM/VIM使用技巧
- Redis [super superfine introductory tutorial]
- ?前台传参的问题待确认
- Implementation of IIC protocol with FPGA (I) IIC bus protocol
- Multithreading and high concurrency Day11
- Source code analysis of ThreadPoolExecutor
- DevStack云计算平台快速搭建
- 1259. 不相交的握手 动态规划
- 1259. 不相交的握手 動態規劃
猜你喜欢

JUC并发编程【详解及演示】
![[attack and defense world web] difficulty four-star 12 point advanced question: cat](/img/fc/6508c7d534c26f487b0a8ae5be7347.png)
[attack and defense world web] difficulty four-star 12 point advanced question: cat

Redis【超强超细 入门教程】
![Redis [super superfine introductory tutorial]](/img/a6/02b3e670067292d884bab7425b4ffb.png)
Redis [super superfine introductory tutorial]
![[2020] [paper notes] optically controlled spectral ratio adjustable y based on two-dimensional photonic crystal——](/img/d5/b4c82b2a9b34036e182ea9f1b14618.png)
[2020] [paper notes] optically controlled spectral ratio adjustable y based on two-dimensional photonic crystal——

日志框架【详解学习】

多线程与高并发day11
.NET Core 实现后台任务(定时任务)Longbow.Tasks 组件(三)

Gradle【图文安装及使用演示 精讲】
![Paddlenlp's UIE classification model [taking emotional propensity analysis news classification as an example] including intelligent annotation scheme)](/img/00/e97dcac9f07e5d4512614536a17cd4.png)
Paddlenlp's UIE classification model [taking emotional propensity analysis news classification as an example] including intelligent annotation scheme)
随机推荐
Redis [super superfine introductory tutorial]
Storage structure and method of graph (II)
ZigBee集成开发环境IAR安装
图的存储结构与方法(二)
Crack WiFi password with Kail
MQ【MessageQueue 图文详解及四大MQ比较】
1259. Programmation dynamique de poignée de main disjointe
BOM introduction of BOM series
Google正在改进所有产品中的肤色表现 践行“图像公平”理念
How to understand: common code block, construction block, static block? What does it matter?
C#Split的用法,Split分割字符串
Time2Vec 的理解与简单实现
@JPA annotation in entity
1259. Disjoint handshake dynamic programming
Three things programmers want to do most | comics
Rapid establishment of devstack cloud computing platform
398. 随机数索引-哈希表法
EmguCV 常用函数功能说明「建议收藏」
【2018】【论文笔记】石墨烯场效应管及【1】——GFETs的种类和原理,GFETs特性,GFETs在太赫兹中的应用和原理
Handwriting bind, call, apply is actually very simple