$ perl -v
$ perl -V
$ which perl
- perlbrew
$ curl -L http://cpanmin.us | perl - App::cpanminus
$ cpanm --help
$ perl -e 'print "Hello, World.¥n"'
#!/usr/bin/env perl
use strict;
use warnings;
print "Hello, World.¥n";
$ cpanm Reply
$ reply
0> print "Hello, World.¥n"
Hello, World.
$res[0] = 1
use strict;
use warnings;
変数名の先頭の記号について。
- スカラー値は先頭に
$
- 配列は先頭に
@
- ハッシュは先頭に
%
my $pepabo = 'paperboy';
my $year = 2014;
my $pi = 3.14;
print $pepabo, "¥n";
print $year, "¥n";
print $pi, "¥n";
リファレンスはあとで。
my @numbers = (1, 2, 3, 4);
my @chars = split //, 'pepabo';
print $chars[0], "¥n"; # => 'p'
print $chars[-1], "¥n"; # => 'o'
- 配列の要素を参照するときに
$
がつくことに注意しよう
my %color_of = ('banana' => 'yellow', 'apple' => 'red');
print $color_of{'banana'}, "¥n"; # => 'yellow'
=>
は,
と同じ意味
my %color_of = ('banana', 'yellow', 'apple', 'red');
- シングルクォーテーションは
'
省略可能
my %color_of = (
banana => 'yellow',
apple => 'red',
);
print $color_of{banana}, "¥n";
偽と判定される値。
- undef
- ''(空文字列)
- 0(文字列の'0'も同じ)
それ以外は真となる。
my $message = 'The quick brown fox jumps over the lazy dog';
if ($message =~ m/fox/) {
print "matched.";
}
- デリミタは
/
じゃなくてもOK - URLにマッチさせるときは
/
以外(!
とか)を使うこともある - デリミタに
/
を使う場合、先頭のm
は省略可能
$message =~ s/dog/dogs/;
print $message, "¥n";
- Perlの理解において重要
- コンテキストによって評価結果が変わる
- 「スカラーコンテキスト」と「リストコンテキスト」
ある操作が「スカラー値」を期待している。
$foo = 'foo';
配列をスカラーコンテキストで評価すると、その要素数が返る。
my @fruits = ('apple', 'banana', 'strawberry');
my $num = @fruits; # => 3
if (@fruits > 0) {
# `if` provides scalar context.
# This is equals to `if (3 > 0)`
}
スカラーコンテキストを明示する。
my @fruits = ('apple', 'banana', 'strawberry');
my $num = scalar(@fruits);
ある操作が「配列」を期待している。
my @fruits = ('apple', 'banana', 'strawberry');
# print() provides list context
print @fruits, 'orange', "¥n"; # => applebananastrawberryorange
print join(' ', @fruits, 'orange'), "¥n"; # => apple banana strawberry orange
my @chars = split //, 'apple'; # => ('a', 'p', 'p', 'l', 'e')