IDEA编写 Per 项目详细步骤 Perl入门级语法

首先在IDEA上安装 Perl插件:

1、文件 -设置- 插件 - 搜索Prel-然后在仓库中搜索perl-下载安装插件



2、插件安装好之后,下载Perl SDK 编译工具:https://www.perl.org/get.html

一般都在使用草莓的那个


下载安装好之后配置IDEA,重新打开IDEA,点击箭头所指按钮,配置Perl SDK安装路径,即安装路径中的bin文件夹即可



至此,环境配置完成


二、开始新建项目,选择perl5


输入项目名称,在kind类型选择Script


然后就可以开始编辑了



基本的入门级语法:只写了我需要的,不在深入

#windows中不需要这行
#!/usr/bin/perl

#定义包名,与java包不一样,可以与结构中的包名不一致,可不写,默认为main
package PackageName;

#use strict;使用严格模式(不用删除即可):任何变量都必须先定义。定义时使用my或our来指定其范围(局部、全局)。
use strict;
use warnings FATAL => 'all';

# 这是一个单行注释
=pdo   多行注释
    声明:    标量:$ (字符串,数字等)
         数组:@
         哈希:% (集合,键值对)
    不同类型的变量可以使用相同的变量名
=cut

#两种输出方式
print( "Hello, world\n" );
print "Hello, world\n";

#单引号不会转义,双引号会,区别单双引号
print "Hello, world\n";    # 双引号:将引号中的转义字符、参数等进行处理
print 'Hello, world\n';    # 单引号:完全当做字符串处理

#Here文档又称作heredoc、hereis、here-字串或here-脚本,是一种在命令行shell(如sh、csh、ksh、bash、PowerShell和zsh)和
# 程序语言(像Perl、PHP、Python和Ruby)里定义一个字串的方法。
my $a = 10;
my $var1 = <<"EOF";
这是一个 Here 文档实例,使用双引号。
可以在这输如字符串和变量。
例如:a = $a
EOF
print "$var1\n";

my $var2 = <<'EOF';
这是一个 Here 文档实例,使用单引号。
例如:a = $a
EOF
print "$var2\n";

#转义字符
my $result = "菜鸟教程 \"runoob\"";
print "$result\n";
print "\$result\n";

#字符串相加与java不同
print "我的是我的"."你的还是我的"."\n";

#特殊字符,不可放入字符串中,在字符串中与普通字符串一样
print "文件名 ".__FILE__."\n";
print "行号 ".__LINE__."\n";#此代码当前行
print "包名 ".__PACKAGE__."\n";
print "__FILE__ __LINE__ __PACKAGE__\n";# 无法解析

#数组变量以 @ 开头。访问数组元素使用 $ + 变量名称 + [索引值] 格式来读取
my @array1 = (1, 2, 'Hello');
my @array2 = qw/这是 一个 数组/;
#数组索引值从 0 开始,即 0 为第一个元素,1 为第二个元素,以此类推。
#负数从反向开始读取,-1 为第一个元素, -2 为第二个元素
my @sites = qw/google taobao runoob/;

print "$sites[0]\n";
print "$sites[1]\n";
print "$sites[2]\n";
print "$sites[-1]\n";    # 负数,反向读取

#Perl 提供了可以按序列输出的数组形式,格式为 起始值 + .. + 结束值,实例如下:
my @var_10 = (1 .. 10);
my @var_20 = (10 .. 20);
my @var_abc = ('a' .. 'z');#字符需要加单引号,大写相同

print "@var_10\n";   # 输出 1 到 10
print "@var_20\n";   # 输出 10 到 20
print "@var_abc\n";  # 输出 a 到 z

#数组长度返回的是数组物理大小,而不是元素的个数,我们可以看以下实例:
my @array = (1, 2, 3);
$array[50] = 4;

my $size2 = @array;
my $max_index = $#array;

print "数组大小:  $size2\n";
print "最大索引: $max_index\n";

#添加和删除数组元素
#push @ARRAY, LIST将列表的值放到数组的末尾
#pop @ARRAY弹出数组最后一个值,并返回它
#shift @ARRAY弹出数组第一个值,并返回它。数组的索引值也依次减一。
#unshift @ARRAY, LIST将列表放在数组前面,并返回新数组的元素个数。
# 创建一个简单是数组
@sites = ("google", "runoob", "taobao");
print "1. \@sites  = @sites\n";

# 在数组结尾添加一个元素
push(@sites, "baidu");
print "2. \@sites  = @sites\n";

# 在数组开头添加一个元素
unshift(@sites, "weibo");
print "3. \@sites  = @sites\n";

# 删除数组末尾的元素
pop(@sites);
print "4. \@sites  = @sites\n";

# 移除数组开头的元素
shift(@sites);
print "5. \@sites  = @sites\n";

#切割一个数组,并返回切割后的新数组:
my @sitess = qw/google taobao runoob weibo qq facebook 网易/;
my @sitess2 = @sitess[3, 4, 5];
print "@sitess2\n";

#数组元素替换使用 splice() 函数,语法格式如下:
my @nums = (1 .. 20);
print "替换前  @nums\n";
splice(@nums, 5, 5, 21 .. 25);#(数组,开始位置,替换个数,替换的值)
print "替换后  @nums\n";

#将字符串分割转换为数组
# 定义字符串
my $var_test = "runoob";
my $var_string = "www-runoob-com";
my $var_names = "google,taobao,runoob,weibo";

# 字符串转为数组
my @test = split('', $var_test);#直接拆分每一个字符
my @string = split('-', $var_string);
my @names = split(',', $var_names);

print "$test[3]\n";  # 输出 com
print "$string[2]\n";  # 输出 com
print "$names[3]\n";   # 输出 weibo

#将数组转换为字符串
# 定义字符串
my $var_stringg = "www-runoob-com";
my $var_namess = "google,taobao,runoob,weibo";

# 字符串转为数组
my @stringg = split('-', $var_stringg);
my @namess = split(',', $var_namess);

# 数组转为字符串
my $string1 = join( '-', @stringg );
my $string2 = join( ',', @namess );

print "$string1\n";
print "$string2\n";

#数组排序:数组排序是根据 ASCII 数字值来排序。所以我们在对数组进行排序时最好先将每个元素转换为小写后再排序。
# 定义数组
my @asites = qw(google taobao runoob facebook);
print "排序前: @asites\n";

# 对数组进行排序
@asites = sort(@asites);
print "排序后: @asites\n";

#合并数组:合并后数组大小为两个之和,而不是2
my @nnumbers = (my @odd, my @even);

#指定索引值可以读取指定的元素,如下所示:
my $vvar = (5, 4, 3, 2, 1)[4];#[]来指定元素位置

print "var 的值为 = $vvar\n";

#value可重复,key不能重复
my %data = ('google' => 'google.com', 'runoob' => 'runoob.com', 'taobao' => 'taobao.com');

my @keys = keys %data;
my $size = @keys;
print "1 - 哈希大小: $size\n";

my @values = values %data;
$size = @values;
print "2 - 哈希大小: $size\n";

#日期
my @months = qw( 一月 二月 三月 四月 五月 六月 七月 八月 九月 十月 十一月 十二月 );
my @days = qw(星期天 星期一 星期二 星期三 星期四 星期五 星期六);

(my $sec, my $min, my $hour, my $mday, my $mon, my $year, my $wday, my $yday, my $isdst) = localtime();
print "$mday $months[$mon] $days[$wday]\n";

#函数(方法)使用
sub Hello {# 函数定义
    print "Hello, World!\n";
}
Hello();# 函数调用

#程序第一个参数为 $_[0], 第二个参数为 $_[1], 以此类推。perl默认按引用的方式调用它们。
# 定义求平均值函数
sub Average {
    # 获取所有传入的参数
    my $n = scalar(@_);
    my $sum = 0;

    foreach my $item (@_) {
        $sum += $item;
    }
    my $average = $sum / $n;
    print '传入的参数为 : ', "@_\n";           # 打印整个数组
    print "第一个参数值为 : $_[0]\n";         # 打印第一个参数
    print "传入参数的平均值为 : $average\n";  # 打印平均值
}
# 调用函数
Average(10, 20, 30);

#变量的临时赋值,使用 local 为全局变量提供临时的值,在退出作用域后将原来的值还回去。
# 全局变量
our $string = "Hello, World!";
sub PrintRunoob {
    # PrintHello 函数私有变量
    local $string;
    $string = "Hello, Runoob!";
    # 子程序调用的子程序
    PrintMe();
    print "PrintRunoob 函数内字符串值:$string\n";
}
sub PrintMe {
    print "PrintMe 函数内字符串值:$string\n";
}
sub PrintHello {
    print "PrintHello 函数内字符串值:$string\n";
}
# 函数调用
PrintRunoob();
PrintHello();
print "函数外部字符串值:$string\n";

#静态变量:state 只在定义该变量的词法作用域中有效
=pdo
    注1:state仅能创建闭合作用域为子程序内部的变量。
    注2:state是从Perl 5.9.4开始引入的,所以使用前必须加上 use。
    注3:state可以声明标量、数组、哈希。但在声明数组和哈希时,不能对其初始化(至少Perl 5.14不支持)。
=cut
use feature 'state';
sub PrintCount {
    state $count = 0; # 初始化变量
    print "counter 值为:$count\n";
    $count++;
}
for (1 .. 5) {
    PrintCount();
}
#创建引用:定义变量的时候,在变量名前面加个\,就得到了这个变量的一个引用,比如:
#my $scalarref = \$foo;     # 标量变量引用
#my $arrayref = \@ARGV;    # 列表的引用
#my $hashref = \%ENV;     # 哈希的引用
#my $coderef = \&handler; # 子过程引用
#my $globref = \*foo;     # GLOB句柄引用

ps:在选择项目结构时候重构只会更改项目名称,但不会更改项目所在文件夹名称,对于有强迫症的我来说很不爽,

连同文件夹一起更改可以将结构切换到 Project Files,然后重构-重命名,就会都改掉



  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值