加载中...

Perl


其中 Y=perl

源代码下载: learnperl-cn.pl

Perl 5是一个功能强大、特性齐全的编程语言,有25年的历史。

Perl 5可以在包括便携式设备和大型机的超过100个平台上运行,既适用于快速原型构建,也适用于大型项目开发。

  1. # 单行注释以#号开头
  2. #### Perl的变量类型
  3. # 变量以$号开头。
  4. # 合法变量名以英文字母或者下划线起始,
  5. # 后接任意数目的字母、数字或下划线。
  6. ### Perl有三种主要的变量类型:标量、数组和哈希。
  7. ## 标量
  8. # 标量类型代表单个值:
  9. my $animal = "camel";
  10. my $answer = 42;
  11. # 标量类型值可以是字符串、整型或浮点类型,Perl会根据需要自动进行类型转换。
  12. ## 数组
  13. # 数组类型代表一列值:
  14. my @animals = ("camel", "llama", "owl");
  15. my @numbers = (23, 42, 69);
  16. my @mixed = ("camel", 42, 1.23);
  17. ## 哈希
  18. # 哈希类型代表一个键/值对的集合:
  19. my %fruit_color = ("apple", "red", "banana", "yellow");
  20. # 可以使用空格和“=>”操作符更清晰的定义哈希:
  21. my %fruit_color = (
  22. apple => "red",
  23. banana => "yellow",
  24. );
  25. # perldata中有标量、数组和哈希更详细的介绍。 (perldoc perldata).
  26. # 可以用引用构建更复杂的数据类型,比如嵌套的列表和哈希。
  27. #### 逻辑和循环结构
  28. # Perl有大多数常见的逻辑和循环控制结构
  29. if ( $var ) {
  30. ...
  31. } elsif ( $var eq 'bar' ) {
  32. ...
  33. } else {
  34. ...
  35. }
  36. unless ( condition ) {
  37. ...
  38. }
  39. # 上面这个比"if (!condition)"更可读。
  40. # 有Perl特色的后置逻辑结构
  41. print "Yow!" if $zippy;
  42. print "We have no bananas" unless $bananas;
  43. # while
  44. while ( condition ) {
  45. ...
  46. }
  47. # for和foreach
  48. for ($i = 0; $i <= $max; $i++) {
  49. ...
  50. }
  51. foreach (@array) {
  52. print "This element is $_\n";
  53. }
  54. #### 正则表达式
  55. # Perl对正则表达式有深入广泛的支持,perlrequick和perlretut等文档有详细介绍。简单来说:
  56. # 简单匹配
  57. if (/foo/) { ... } # 如果 $_ 包含"foo"逻辑为真
  58. if ($a =~ /foo/) { ... } # 如果 $a 包含"foo"逻辑为真
  59. # 简单替换
  60. $a =~ s/foo/bar/; # 将$a中的foo替换为bar
  61. $a =~ s/foo/bar/g; # 将$a中所有的foo替换为bar
  62. #### 文件和输入输出
  63. # 可以使用“open()”函数打开文件用于输入输出。
  64. open(my $in, "<", "input.txt") or die "Can't open input.txt: $!";
  65. open(my $out, ">", "output.txt") or die "Can't open output.txt: $!";
  66. open(my $log, ">>", "my.log") or die "Can't open my.log: $!";
  67. # 可以用"<>"操作符读取一个打开的文件句柄。 在标量语境下会读取一行,
  68. # 在列表环境下会将整个文件读入并将每一行赋给列表的一个元素:
  69. my $line = <$in>;
  70. my @lines = <$in>;
  71. #### 子程序
  72. # 写子程序很简单:
  73. sub logger {
  74. my $logmessage = shift;
  75. open my $logfile, ">>", "my.log" or die "Could not open my.log: $!";
  76. print $logfile $logmessage;
  77. }
  78. # 现在可以像内置函数一样调用子程序:
  79. logger("We have a logger subroutine!");

使用Perl模块

Perl模块提供一系列特性来帮助你避免重新发明轮子,CPAN是下载模块的好地方( http://www.cpan.org/ )。Perl发行版本身也包含很多流行的模块。

perlfaq有很多常见问题和相应回答,也经常有对优秀CPAN模块的推荐介绍。

深入阅读


还没有评论.