perl初心者BLOG

2009-05-05

[][]配列について(応用) 23:44

■このように配列変数を使わないやりかたができる

print "番号を入力してください: ";
$number = <STDIN>;
chomp($number);
print (('aaa', 'bbb', 'ccc')[$number]);

■以下のように、文字列、数値、配列、変数を組み合わせることも可能

@hoge = (4,5,6);
$foo = 7;
@arr = ("aaa","bbb",1,2,3,@hoge,$foo);

■配列に.演算子

・サンプルコード

~$ cat hoge.pl
#!/usr/local/bin/perl
@arr = ("私","は","太郎","です");
print @arr."\n";

・実行結果

~$ ./hoge.pl
4

※ 配列に.演算子が使われているため、スカラー変数として扱われる。だから数値(配列の要素数)が表示される。


■配列に+演算子

・サンプルコード

@arr = ("私","は","太郎","です");
print @arr + 0;

・実行結果

~$ ./hoge.pl
4~$

※ 配列に+演算子が使われているため、スカラー変数として扱われる。だから数値(配列の要素数)が表示される。

[][]配列について(基本) 23:08

■代入(基本)

・数値

@arr = (1,2,3);

・文字列

@arr = ("aaa","bbb","ccc");

■代入(応用)

・qw演算子

@arr = qw(aaa bbb ccc);

※ qw演算子では、スペース、タブ、改行がデリミタとなる。

・範囲演算子

@arr = (1..5);

※ (1,2,3,4,5)と同じ意味になる。

※ ちなみに(1..5,7)で、(1,2,3,4,5,6,7)と同じ意味になる

※ 英字アルファベットにも使えるよ


■取り出し

・サンプルコード

~$ cat hoge.pl
#!/usr/local/bin/perl
@arr = (1,2,3);
print "$arr[2]\n";

※ 取り出すときはスカラー変数を使うところに注意

※ 配列の添え字は0始まり

・実行結果

~$ ./hoge.pl
3

■設定

・サンプルコード

~$ cat hoge.pl
#!/usr/local/bin/perl
@arr = (1,2,3);
$arr[2] = 5;
print @arr;

※ 各要素に値を設定するときもスカラー変数を使用。

・実行結果

~$ ./hoge.pl
125~$

■取り出し(push&pop)

・サンプルコード

~$ cat hoge.pl
#!/usr/local/bin/perl
@arr = (1..3);
print "配列初期状態:",@arr,"\n";
push(@arr, 4);
print "push後の配列:",@arr,"\n";
$hoge = pop(@arr);
print "pop後の配列:",@arr,"\n";
print "popされた要素は$hogeです\n";

・実行結果

~$ ./hoge.pl
配列初期状態:123
push後の配列:1234
pop後の配列:123
popされた要素は4です

■取り出し(shift & unshift)

・サンプルコード

~$ cat hoge.pl
#!/usr/local/bin/perl
@arr = (1..3);
print "配列初期状態:",@arr,"\n";
unshift(@arr, 4);
print "unshift後の配列:",@arr,"\n";
$hoge = shift(@arr);
print "shift後の配列:",@arr,"\n";
print "shiftされた要素は$hogeです\n";

・実行結果

~$ ./hoge.pl
配列初期状態:123
unshift後の配列:4123
shift後の配列:123
shiftされた要素は4です

push&popとの違いは、走査対象が先頭要素であるというところ。


■ループで配列を処理する

・サンプルコード

~$ cat hoge.pl
#!/usr/local/bin/perl
@arr = (1..3);
# パターン1
foreach $data(@arr) {
        print $data;
}
print "\n";
# パターン2
foreach (@arr) {
        print $_;
}
print "\n";

・実行結果

~$ ./hoge.pl
123
123

・for文でループするならこんな感じ

@arr = ("aaa", "bbb", "ccc");
for ($i=0; $i < @arr; $i++) {
    print "$i: $arr[$i]\n";
}

print関数に配列

・サンプルコード

~$ cat hoge.pl
#!/usr/local/bin/perl
@arr = (1,2,3);
print @arr;

・実行結果

~$ ./hoge.pl
123~$

■配列をスカラー値に代入

・サンプルコード

~$ cat hoge.pl
#!/usr/local/bin/perl
@arr = (1,2,3);
$hoge = @arr;
print "hoge=$hoge";

・実行結果

~$ ./hoge.pl
hoge=3~$

※ リストではなくリストの要素数を持つスカラー変数として扱われる。