Perl tips

 1.打开文件

open (,"< ") or die "file open fail,$!\n";

$file = "/projects/.alias.csh";

open (readin,"< $file) or die "file $file open fail,$!\n";

2.对文件中的内容替换时

while($lines = ){

        $lines =! s/alias/unalias/g;

        print $lines;

}

将从文件句柄中获得到的内容,使用s///g替换,输出替换后的内容

eg:原文件:

        alias hello 'echo hello'

输出

   hello 'echo hello'

可以使用这个方法对变量中的头或者尾部空元素进行删除

$lines =~ s/\s*$//g;

$lines =~ s/^\s*//g;

3.对array(数组)进行grep

@aaa = ("aaa","bbb","ccc");

@zzz = grep /a*/,@aaa;##通过正则表达式找到@aaa中符合条件的元素,并且赋值给@zzz

4.变量嵌套

相比tcl,perl是可以变量嵌套的:

$aa = "xxx";

$xx = "yyy";

print "${${aa}}\n"

结果:

yyy

5.合并数组

@aaa = ("aaa","bbb","ccc");

@bbb = ("xxx","yyy","ccc");

@ccc = (@aaa,@bbb)

6.拼接符

$aa = /project;                                            $aa = /project;

$bb = 20210625;             或                       $aa .= "\/20210625";

$cc = $aa."/".$bb;

                                        print $cc;

 输出:/project/20210625

7.使用system进行运行linux命令时(cd mkdir等)

issue1 : 当使用cp -rf时

system("cp -rf $lines  /projects/FILE/");

如果提示

cp:missing destination file operand after****

是因为$lines里包含了换行符,工具就会理解成cp -rf $lines然后在执行/projects/FILE/,

解决:

需要chomp函数。

chomp($lines);
system("cp -rf $lines  /projects/FILE/");

issue2:当mkdir时

mkdir是不允许跨级建立文件夹的(及不支持递归建立文件夹)如现在只有/projects这一级时,

mkdir /peojects/aaa/bbb 这样是会报错的,需要一级一级mkdir

解决:

不使用system函数,直接使用

`exec mkdir -p /peojects/aaa/bbb`

issue3:当想在perl 内调用csh 脚本时;因为source只csh的内嵌命令,需要在perl中指定解释器

system("/bin/csh" , "./try.csh");

8.切割数组 、join、spilt

@corner = ("cworst_T_40","rcworst_T_40");

对上面的数据想分别得到rc corner和温度:

foreach $corner (@Corner) {
    @all_para = split /_/,$corner;
    $Tem =  $all_para[-1];
    @rc_para = join("_",@all_para[0.. $#all_para-1]);
}

        1.$#all_para 表示数组最后一个元素的角标,上面的例子里这个值就是2(并不是3,因为从0

          开始计算)

        2.[0.. $#all_para-1]:这个是为了获取@all_para中第一个到倒数第二个的元素,要注意在$#前

          面是需要空格的。

        3.join("连接符",“字符串”)

           split("分隔符","字符串")或 split /"分隔符"/,"字符串",分隔符默认为空格

           例子如代码处。

9.日期函数

$current_date =  localtime();

print $current;

暂时确定不可以直接 print localtime();

10.除法计算

 perl的除法和tcl是不同的,或自动得到浮点数,(tcl如果想得到浮点数,需要将一个数变成浮点数类型才可以,否则自动向下取整)

$a = 3;
$b = 2;
$c = $a / $b;

print $c;

1.5

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值