- 论坛徽章:
- 30
|
- 调用没有文件句柄的< >,会从STDIN中读取数据,或从任何文件中。
- As you may have gathered, print prints to STDOUT by default if no filehandle is named.
- 如果没有文件句柄被命名, 默认情况下打印到STDOUT。
- 文件测试
- 功能- e是一个测试指定的文件是否存在的内置函数。
- print "what" unless -e "/usr/bin/perl";
- 功能- d是一个测试指定的文件是否为一个目录的内置函数。
- 功能- f是一个测试是否在指定的文件是纯文本文件的内置功能,。
- 这些只是三个大型类的函数的形式- X,X是一些小写或大写字母。这些函数被称为文件测试。注意前置”-”。在谷歌查询,”-”表示排除结果包含该搜索词。搜索“perl文件测试”可得到结果。
- 正则表达式
- 正则表达式出现在许多语言和工具里。Perl的核心正则表达式语法和在其他地方一样基本上是相同的,但Perl的正则表达式功能完整复杂和难以理解。我给你的最好建议是只要有可能避免这种复杂性。
- 执行匹配操作使用= ~ m / /。在标量上下文,= ~ m / /成功执行,将返回true;如果失败将返回false。
- my $string = "Hello world";
- if($string =~ m/(\w+)\s+(\w+)/) {
- print "success";
- }
- 括号执行子匹配。成功后执行匹配操作匹配得到的值在的变量$ 1,$ 2,$ 3,…:
- print $1; # "Hello"
- print $2; # "world"
- 在列表上下文,= ~ m / /返回$ 1,$ 2,…作为一个列表。
- my $string = "colourless green ideas sleep furiously";
- my @matches = $string =~ m/(\w+)\s+((\w+)\s+(\w+))\s+(\w+)\s+(\w+)/;
- print join ", ", map { "'".$_. "'" } @matches;
- # prints "'colourless', 'green ideas', 'green', 'ideas', 'sleep', 'furiously'"
- 替换操作执行使用= ~ s / / /。
- my $string = "Good morning world";
- $string =~ s/world/Vietnam/;
- print $string; # "Good morning Vietnam"
- 注意,$ string的内容已经改变了。你必须对标量变量操作。如果是一个文字字符串,你会得到一个错误。
- / g标志表示”组匹配”。
- 在标量上下文, ~ m / / g执行全文查找,成功,返回true;如果执行失败将返回false。你可以访问$1得到内容。例如:
- my $string = "a tonne of feathers or a tonne of bricks";
- while($string =~ m/(\w+)/g) {
- print "'".$1."'\n";
- }
- 在列表中上下文中,一个= ~ m / / g在一次调用返回所有的内容。
- my @matches = $string =~ m/(\w+)/g;
- print join ", ", map { "'".$_. "'" } @matches;
- 一个= ~ s / / / g调用执行全文搜索/替换并返回匹配的数量。在这里,我们替换所有元音字母“r”。
- #试一试没有/ g。
- $string =~ s/[aeiou]/r/;
- print $string; # "r tonne of feathers or a tonne of bricks"
- $string =~ s/[aeiou]/r/;
- print $string; # "r trnne of feathers or a tonne of bricks"
- #和使用/ g
- $string =~ s/[aeiou]/r/g;
- print $string, "\n"; # "r trnnr rf frrthrrs rr r trnnr rf brrcks"
- /I 使匹配和替换不区分大小写的。
- / x标志允许您的正则表达式包含空格(例如。、换行符)和评论。
- "Hello world" =~ m/
- (\w+) # one or more word characters
- [ ] # single literal space, stored inside a character class
- world # literal "world"
- /x;
- #返回true
复制代码 |
|