vimer linux kernel 爱好者

perl练习(2)

2014-12-24

#正则表达式 ###匹配一个单词 “Hello World” =~ /World/; #成功 这里“Hello World”是一个字符串,World是正则表达式,/ /包围的/World/告诉perl为了匹配搜索字符串,操作符是”=~”连接字符串和正则表达式。

正则表达式操作符有两种, =~ 和!~. ###() group Perl 中引入了一个(),由此出现的 \1,\2是抓取(),(\1 is back reference)

$_ = "abba";
if (/(.)\1/) {
	print "It matched "
}

(.)\1是说你现在匹配一个紧挨着这个字符的东西,上面的例子中,(.)匹配一个a,当它往后寻找时,必须找一个同他匹配的。现在是ab,则匹配下一个是abb,于是就匹配了bb.

不是不是,为什么原文书我看不懂

/(fred)*/ matches strings like hello, world

#perl的调试技术 下面说的perl的调试技术是针对Perl解释器本身,可以通过 -d 选项打开这个功能,我们简单的就这个调试技术做个了解。

perl -d xx.pl

这样就打开了调试功能。 ##插入/查看/删除断点

插入断点使用b命令,格式为 b 行号/函数名 条件

查看断点使用L命令,注意使用大写。小写只会显示程序尚未到达的部分内容。

删除断点使用B命令,格式为 B 行号|* ,使用通配符删除所有的断点。 ##增加/查看/删除监视 新填一个变量,格式 w $val==1

查看这个变量,格式 p $val==1

删除这个变量,格式 W $val==1 ##步入执行 碰到子程序会进入到子程序, 命令 s

退出执行的命令为 r

##退出调试

q

p128 =======摘自网络======

  1. chomp无参数时,使用默认参数,将对$_操作。
  2. 数组@array..可用$array[number]引用。$#array..表示数组中索引数。
  3. $!包含出错信息;
  4. 默认打开文件句柄的方式是“<”即输入,“»”和“>”区别就在于一个添加方式操作 文件的。 if(@ARGV < 2){ die “Not enough arguments\n”; }
  5. select LOG;改变默认句柄;在接下来的输出时不需要输入句柄参数; print LOG “Hello world!\n”;
  6. 重新打开一个句柄会关闭之前的文件句柄;
  7. my @k = keys %hash; my@v = values %hash返回键值或者变量值; hask中exists函数判断时候存在某个key,delete函数删除key和value;
  8. ”.”是元字符的通配符。星号(”*“)是匹配前一项0次或者多次(简单量词), “+”是指一个或者多个,”?”是表示出现不出现一次。
  9. “/i”大小写无关;”/s”匹配任何符号;”/x”添加空格;结合用”/is”; 10.”m//”其实代表的就是一般的模式匹配”/ /”也可以使用m(),m{},m<>..类似”qw//”。 11.词界锚定,\b,是针对单词使用的。如/\bfred\b/可以匹配上单词fred. 12.$1, $2 这样的名字同模式中括号对数中匹配的项目; 13.三个特殊变量($`, $&, $’)来指出是在什么地方匹配上的,分别为左中右。 14.”/s”如果不加”/g”只能执行一次; 15.unless和if相反使用,同时可以紧接在控制修饰语后形成一条语句,elsif不是elseif,少了一个e; 16.last和next对应别的语言的break和continue;redo不进行条件表达式的下一个 循环即直接跳转到循环内容的顶部。 17.unlink “file”;rename “old”,”new”;link “file”;mkdir “file”, oct(“permission”);rmdir “file”; chmod 0755, “fred”, “barney”;chown $user, $group, glob “.o”;utime $now, $ago, glob “”; 18.index..$where = index($big, $small);开头处找到,则index 返回0。 如果一个字符后,则返回1,依次类推。如果子串不存在,则返回-1;rindex… 19.$part = substr($string, $initial_position, $length); 20.my $money = sprintf “%.2f”, 2.49997; 21.system “date”; 22.my(undef, $card_num, undef, undef, undef, $count) = split /:/;

</pre>


下一篇 python安装软件

Comments

Content