Perl 基础语法
Hello World 程序
让我们从经典的 Hello World 程序开始:
perl
#!/usr/bin/perl
use strict;
use warnings;
print "Hello, World!\n";代码解释:
#!/usr/bin/perl:称为 shebang,告诉系统使用哪个解释器执行脚本use strict;:启用严格模式,强制声明变量use warnings;:启用警告,帮助发现潜在问题print:输出函数\n:换行符
运行程序:
bash
chmod +x hello.pl
./hello.plPerl 程序结构
基本结构
一个完整的 Perl 程序包含以下部分:
perl
#!/usr/bin/perl # Shebang 行(可选,但推荐)
# Pragma(编译指令)
use strict;
use warnings;
use v5.38; # 指定 Perl 版本
# 主程序代码
# ... 你的代码 ...
1; # 返回真值(模块中需要)注释
Perl 使用 # 符号表示注释:
perl
# 这是单行注释
use strict; # 行尾注释也可以
=begin comment
这是多行注释
可以跨越多行
=end comment
=for comment
这也是多行注释的
另一种方式
=cutPerl 语句
语句分隔符
Perl 使用分号 ; 作为语句分隔符:
perl
print "第一条语句\n";
print "第二条语句\n";注意:最后一个语句的分号可以省略,但为了清晰起见,建议总是使用分号。
语句块
语句块用花括号 {} 包围:
perl
{
print "语句块开始\n";
print "语句块内的代码\n";
print "语句块结束\n";
}输出语句
print 函数
perl
print "Hello\n"; # 基本输出
print "Hello", " ", "World", "\n"; # 多参数输出
# 不加换行符
print "Hello "; # 输出:Hello World
print "World\n";say 函数(Perl 5.10+)
say 函数自动在末尾添加换行符:
perl
use v5.10; # 或更高版本
say "Hello"; # 自动添加 \n
say "World"; # 每个输出都在新行printf 函数
格式化输出:
perl
my $name = "Alice";
my $age = 25;
printf "Name: %s, Age: %d\n", $name, $age;
# 输出:Name: Alice, Age: 25
# 格式化数字
printf "Pi: %.2f\n", 3.14159; # 输出:Pi: 3.14
printf "Decimal: %d, Hex: %x, Octal: %o\n", 255, 255, 255;
# 输出:Decimal: 255, Hex: ff, Octal: 377输入语句
从标准输入读取
perl
print "请输入你的名字: ";
my $name = <STDIN>;
chomp $name; # 移除末尾的换行符
print "你好, $name!\n";简化写法
perl
print "请输入你的名字: ";
chomp(my $name = <STDIN>);
print "你好, $name!\n";读取一行
perl
my $line = <STDIN>; # 读取一行(包括换行符)
my $line2 = <>; # 简写,等同于 <STDIN>变量声明
使用 strict 和 warnings
perl
#!/usr/bin/perl
use strict;
use warnings;
# 必须声明变量
my $name = "Alice";
print "$name\n";
# 未声明的变量会报错
# print $age; # 错误:Global symbol "$age" requires explicit package namemy 声明局部变量
perl
my $name = "Bob"; # 声明并初始化
my $age; # 声明但不初始化(值为 undef)
$age = 30; # 赋值
print "$name is $age years old\n";our 声明全局变量
perl
our $global_var = "global";local 临时修改变量
perl
our $var = "original";
{
local $var = "modified"; # 临时修改
print "Inside block: $var\n"; # 输出:modified
}
print "Outside block: $var\n"; # 输出:original代码风格建议
缩进
使用 4 个空格或 1 个 tab 进行缩进:
perl
if ($condition) {
print "条件为真\n";
if ($another_condition) {
print "嵌套条件\n";
}
}变量命名
perl
# 标量:小写字母,单词间用下划线
my $user_name = "Alice";
my $userAge = 25; # 驼峰命名也可以
# 数组:复数形式或加后缀
my @users = ("Alice", "Bob");
my @user_list = ("Alice", "Bob");
# 哈希:复数形式或加后缀
my %user_data = (name => "Alice", age => 25);
my %scores = (math => 90, english => 85);括号使用
perl
# 函数调用可以省略括号
print "Hello\n";
print("Hello\n"); # 也可以使用括号
# 条件判断建议使用括号
if ($condition) {
# ...
}编译和执行
直接执行
bash
perl script.pl作为脚本执行
bash
chmod +x script.pl
./script.pl检查语法(不执行)
bash
perl -c script.pl启用警告
bash
perl -w script.pl调试模式
bash
perl -d script.pl实践示例
示例 1:简单计算器
perl
#!/usr/bin/perl
use strict;
use warnings;
print "请输入第一个数字: ";
chomp(my $num1 = <STDIN>);
print "请输入第二个数字: ";
chomp(my $num2 = <STDIN>);
print "请选择操作 (+, -, *, /): ";
chomp(my $op = <STDIN>);
my $result;
if ($op eq '+') {
$result = $num1 + $num2;
} elsif ($op eq '-') {
$result = $num1 - $num2;
} elsif ($op eq '*') {
$result = $num1 * $num2;
} elsif ($op eq '/') {
$result = $num1 / $num2;
} else {
print "无效的操作符\n";
exit;
}
printf "结果: %.2f\n", $result;示例 2:用户信息收集
perl
#!/usr/bin/perl
use strict;
use warnings;
print "=== 用户信息收集 ===\n";
print "姓名: ";
chomp(my $name = <STDIN>);
print "年龄: ";
chomp(my $age = <STDIN>);
print "城市: ";
chomp(my $city = <STDIN>);
print "\n=== 用户信息 ===\n";
printf "姓名: %s\n", $name;
printf "年龄: %d\n", $age;
printf "城市: %s\n", $city;
if ($age >= 18) {
print "状态: 成年人\n";
} else {
print "状态: 未成年人\n";
}示例 3:多行输入处理
perl
#!/usr/bin/perl
use strict;
use warnings;
print "请输入多行文本(Ctrl+D 结束):\n";
my @lines = <STDIN>; # 读取所有行到数组
print "\n你输入了 " . scalar(@lines) . " 行:\n";
print @lines; # 输出所有行常见错误
1. 忘记分号
perl
print "Hello\n" # 错误:缺少分号
print "World\n"; # 语法错误2. 未声明变量
perl
use strict;
print $name; # 错误:需要声明变量3. 混淆标量和数组
perl
my @numbers = (1, 2, 3);
print $numbers; # 错误:应该用 @numbers 或 $numbers[0]4. 拼写错误
perl
my $name = "Alice";
print "$nmae\n"; # 错误:变量名拼写错误小结
本章节学习了 Perl 的基础语法:
- ✅ 程序结构和注释
- ✅ 输入输出语句
- ✅ 变量声明
- ✅ 代码风格规范
- ✅ 编译和执行方法
接下来,我们将学习 Perl 数据类型。