初めてのPerl 第3章 ver2

本日の作業内容

  • 初めてのperl(配列、サブルーチン)

以下本日行ったテストコードと、その出力結果です。

配列

use strict;
use warnings;
use data::dumper;

my @fred;

$fred[99] = "blue";

$fred[0] = "takeshi";
$fred[1] = "takurou";
$fred[2] = "mika";

foreach my $test(@fred){
  print $test . "\n";
}

my $number = 2.71828;
print $fred[$number]; # index2が表示される小数点は切り離される。

my $end = $#fred;
print $end; # 値が格納されている最大のindexを格納する。

my @list = ("fred","george","tom");
my @test = qw/fred george tom mike/;

my @tests;
my @lists;

# 下記の代入している値は全て第一引数(@fred)に格納される。
(@freds,@lists,@tests) = ("red","momo","ayataka");

my @rocks = qw/ mike mike mike/;
my @tuny  = ();
my @giant = 1..1e5;
my @max = (@giant , unfer , @giant);
my $giant = "hello";

print dumper $giant;

要素がない(unfar)であるため、以下の「use of~」が96行表示されるが、省略しています。

use of uninitialized value $test in concatenation (.) or string at /usr/home/vagrant/perltest/a.pl line 15.
takeshi
takurou
mika

配列の中に要素が何もないときはundef値となり、出力時には以下のようなエラーを発生させる。

use of uninitialized value $test in concatenation (.) or string at /usr/home/vagrant/perltest/perl3-2.pl line 44.

use strict;
use warnings;

my @numbers = <stdin>;

my @name = qw(test taro jiro saburo shirou);

foreach my $number (@numbers){
  if($number =~ /^\d+$/){
    print $name[$number] . "\n";
  }else{
    print "入力し直してください:$number";
  }
}

以下のような表示になります。

1
2
3
q
taro
jiro
saburo
入力し直してください:q