Learn Perl #1

Perl

use strict & warnings

#!/usr/bin/perl
use strict;
use warnings;

A potential problem caught by use strict; will cause your code to stop immediately when it is encountered, while use warnings; will merely give a warning (like the command-line switch -w) and let your code run.

print '' & ""

 print "Hello, $name\n";     # works fine
 print 'Hello, $name\n';     # prints $name\n literally

variables

scalars

A scalar represents a single value:

Scalar values can be strings, integers or floating point numbers, and Perl will automatically convert between them as required.

 my $animal = "camel";
 my $answer = 42;

==note==

print; # prints contents of $_ by default

Arrays

An array represents a list of values

Arrays are zero-indexed.

 my @animals = ("camel", "llama", "owl");
 my @numbers = (23, 42, 69);
 my @mixed   = ("camel", 42, 1.23);

@animals[0,1];                 # gives ("camel", "llama");
@animals[0..2];                # gives ("camel", "llama", "owl");
@animals[1..$#animals];        # gives all except the first element

==note==

$#array tells you the index of the last element of an array:

Hashes

A hash represents a set of key/value pairs:

 my %fruit_color = ("apple", "red", "banana", "yellow");

You can use whitespace and the => operator to lay them out more nicely:

 my %fruit_color = (
    apple  => "red",
    banana => "yellow",
 );

To get at hash elements:

$fruit_color{"apple"};   

You can get at lists of keys and values with keys() and values().

my @fruits = keys %fruit_colors;
my @colors = values %fruit_colors;

Variable scoping

However, the above usage will create global variables throughout your program, which is bad programming practice. my creates lexically scoped variables instead. The variables are scoped to the block (i.e. a bunch of statements surrounded by curly-braces) in which they are defined

 my $x = "foo";
 my $some_condition = 1;
 if ($some_condition) {
     my $y = "bar";
     print $x;           # prints "foo"
     print $y;           # prints "bar"
 }
 print $x;               # prints "foo"
 print $y;               # prints nothing; $y has fallen out of scope

Regexp

  • =~ match
  • !~ does not match

Replace

s/<pattern>;/<replacement>;/

match

m/<regexp>;/ or /<regexp>;/

transform

tr/<pattern>;/<replacemnt>;/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容