加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl 脚本学习笔记

发布时间:2020-12-15 23:49:10 所属栏目:大数据 来源:网络整理
导读:前言: ? 以下材料为 per l脚本学习过程中电子形式的记录,与大家共享。 1. defined 的使用(判断某个变量是否被赋值)。 $b="";if((defined $b)==1){ printf("have original valuen");}else { printf("not initn");} 2. 通过 $#ARGV 判断 perl 脚本运行时

前言:

? 以下材料为 per l脚本学习过程中电子形式的记录,与大家共享。

1. defined 的使用(判断某个变量是否被赋值)。

$b="";
if((defined $b)==1)
{
   printf("have original valuen");
}else {
   printf("not initn");
}


2. 通过 $#ARGV 判断 perl 脚本运行时是否带有参数。

cmd            $#ARGV  
  ./test.pl        -1
  ./test.pl xx      0
  ./test.pl xx yy   1

3. 获取脚本的文件名称。

 basename($0) 获取脚本文件的名称,没有路径信息、perl等。比如: perl ./aa/bb/c.perl  返回 c.perl


4. 环境变量的获取。

$ENV{AUTO_HOME}


5. 为什么有时候别人的脚本里出现 use strict ?

use strict; 可以检测出拼写类错误,$ENV{_}DENG等


6. 常见数据结构的访问。

  $string = "string";
  @array  = qw(w,e,r,5);
  %hash = (1=>q,3=>r);
  
  
  printf("$#ARGVn");

my $str = "string";
my @array  = qw(w e r 5 y 0.0);
my %hash = (1=>5,r=>4,e=>6);

print $str."n";
printf("@array len is:  [".@{array}."]n");
printf("@array content is: [@array] n");
for(my $i=0;$i<@array;$i++)
{
	printf("$i  is $array[$i]n");
}

while((my $k,my $v)=each(%hash))
{
	printf("$k is for $vn");
}



7. 读文件内容并显示。


8. 常用函数的示例。


9. 函数定义域之 --- 全局变量?

?函数定义域之 --- 继承变量

?函数定义域之 --- 本地变量

10. ?pop函数的使用。

shift 函数的使用。


11. perl 跳过注释

next if ($_=~/^(s*#)/);

12.eval的用法

(1)try{} catch

eval {
    1/0; # 这会做成 division by zero 的 die() 错误
}; # 留意这里是要分号的!
 
if ( $@ ) { # 这就是在 eval 发现抓到错了!
    print "Some error happen!! $@" # 这样就可以得到错误的讯息
} 
else { 
    print "All good!!" 
}


13.perl 多线程开发

#!/bin/perl

use threads;
use Cwd;
use POSIX qw(strftime);
 
sub count
{
   my $i;	
   my ($name) = @_;
   my $current_time = strftime "%Y-%m-%d %H:%M:%S",localtime;
   for ($i = 0; $i < 10; $i++)
   {
     print "$current_time  $name $in";
	 system("python Open_B.py");
   }
}
 
#创建第一批线程
my $thread_1_01 = threads->create('count',Thread_1);
my $thread_1_02 = threads->create('count',Thread_2);

# 等待第一批线程结束完成
$thread_1_01->join();
$thread_1_02->join();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读