「Perl小技集」の版間の差分
ナビゲーションに移動
検索に移動
imported>Webmaster |
imported>Webmaster |
||
42行目: | 42行目: | ||
配列の個数は、左辺のスカラー変数に代入することで数でてきます。代入が無いと要素そのものが出力されます。<br /> | 配列の個数は、左辺のスカラー変数に代入することで数でてきます。代入が無いと要素そのものが出力されます。<br /> | ||
<syntaxhighlight lang="perl"> | <syntaxhighlight lang="perl"> | ||
+ | my @spec = () | ||
my @chars = qw/z z a b c d e f/; | my @chars = qw/z z a b c d e f/; | ||
+ | push(@spec, \@chars); | ||
#配列の個数のスカラー変数に代入 | #配列の個数のスカラー変数に代入 | ||
− | my $num = @chars; | + | my $num = @{$chars[1]}; |
#z z a b c d e fが表示される | #z z a b c d e fが表示される | ||
53行目: | 55行目: | ||
print "$num\n"; | print "$num\n"; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | ---- | + | === 配列の個数を表示する(2次元配列) === |
+ | 配列の個数は、左辺のスカラー変数に代入することで数でてきます。代入が無いと要素そのものが出力されます。<br /> | ||
+ | 2次元配列は結構面倒くさいです<br /> | ||
+ | |||
+ | <syntaxhighlight lang="perl"> | ||
+ | |||
+ | my @spec = (); | ||
+ | |||
+ | my @chars = qw/z z a b c d e f/; | ||
+ | push(@spec, \@chars); | ||
+ | |||
+ | my @chars = qw/a b c d e f g/; | ||
+ | push(@spec, \@chars); | ||
+ | |||
+ | my @chars = qw/q w e r t y/; | ||
+ | push(@spec, \@chars); | ||
+ | |||
+ | #------------------------------------------------------------------------------------------- | ||
+ | #二次元配列は普通の配列に、配列のリファレンス並んでいる | ||
+ | #配列の個数のスカラー変数に代入 | ||
+ | my $num; | ||
+ | |||
+ | #要素数「8」が表示される | ||
+ | $num = @{$spec[0]}; | ||
+ | print "要素数:$num\n"; | ||
+ | |||
+ | #要素数「8」が表示される | ||
+ | $num = @{$spec[1]}; | ||
+ | print "要素数:$num\n"; | ||
+ | |||
+ | #要素数「8」が表示される | ||
+ | $num = @{$spec[2]}; | ||
+ | print "要素数:$num\n"; | ||
+ | |||
+ | #------------------------------------------------------------------------------------------- | ||
+ | |||
+ | #配列の最大インデックスは、変数名に『$#』を添えて表記します。 | ||
+ | #インデックス数「7」が表示される | ||
+ | print "インデックス数:$#{$spec[0]}\n"; # 2次元配列変数からの@spec 0行目の最大インデックス | ||
+ | |||
+ | #インデックス数「6」が表示される | ||
+ | print "インデックス数:$#{$spec[1]}\n"; # 2次元配列変数からの@spec 1行目の最大インデックス | ||
+ | |||
+ | #インデックス数「5」が表示される | ||
+ | print "インデックス数:$#{$spec[2]}\n"; # 2次元配列変数からの@spec 1行目の最大インデックス | ||
+ | |||
+ | #------------------------------------------------------------------------------------------- | ||
+ | #2次元配列の0行目「z z a b c d e f」が表示される | ||
+ | for (my $i = 0; $i <= $#{$spec[0]}; $i++) { | ||
+ | print ${$spec[0]}[$i], "\n"; # 左は、$spec[0]->[$i]や$bbb[0][$i]と等価 | ||
+ | } | ||
+ | |||
+ | #2次元配列の1行目「a b c d e f g」が表示される | ||
+ | for (my $i = 0; $i <= $#{$spec[1]}; $i++) { | ||
+ | print ${$spec[1]}[$i], "\n"; # 左は、$spec[1]->[$i]や$bbb[0][$i]と等価 | ||
+ | } | ||
+ | |||
+ | #2次元配列の1行目「a b c d e f g」が表示される | ||
+ | for (my $i = 0; $i <= $#{$spec[1]}; $i++) { | ||
+ | print ${$spec[2]}[$i], "\n"; # 左は、$spec[2]->[$i]や$bbb[0][$i]と等価 | ||
+ | } | ||
+ | |||
+ | </syntaxhighlight>---- | ||
<!-- カテゴリに追加するページ名を記入 --> | <!-- カテゴリに追加するページ名を記入 --> | ||
[[Category:Perl|こわざしゅう]] | [[Category:Perl|こわざしゅう]] |
2017年9月30日 (土) 11:11時点における版
プログラミングをしばらくしていないと、いろいろ忘れるのでPerlで使用出来る個人的に覚えておきたい小技集を備忘録としてまとめました
目次
言葉の理解
配列とリスト
同じ者だと思っていました。
言葉的な違いで、配列は変数
であり、リストは表記法
ということらしい
リストは値が並んでいるのをリストといいます
# リスト
('a', 'b', 'c', 'd')
配列は変数
なので、配列@array
にリストの'a', 'b', 'c', 'd'
を代入しているという言い方になるのでしょうか、意味的にはそんな言葉を使うのが良いのかも知れません。
# 配列への代入
my @array = ('a', 'b', 'c', 'd');
配列関係
値の表示・参照
配列の各要素には、添え字を指定することで、以下のようにしてアクセスすることができます
#直接指定することで値を表示する。ここでは$make_unionというリストに入っている[0]番目の要素を表示する
print $make_union[0];
#encode文を挟む場合は以下の様な表現となる
print encode('cp932',$make_union[0]);
配列一覧出力
for
やwhile
で一つずつ参照して表示させても良いですが、以下のワンライナーで表示できます
要素の1つずつ改行を付けて出力します
#joinで1行毎に改行を入れて出力する
print join("\n", @make_union);
#encode文を挟む場合は以下の様な表現となる
print encode('cp932',join("\n", @make_union));
配列最後の要素を出力する
$#変数名
で参照できます
#これで一番最後の配列に入っている値を表示できる
print "$array[$#_array]\n";
配列の個数を表示する
配列の個数は、左辺のスカラー変数に代入することで数でてきます。代入が無いと要素そのものが出力されます。
my @spec = ()
my @chars = qw/z z a b c d e f/;
push(@spec, \@chars);
#配列の個数のスカラー変数に代入
my $num = @{$chars[1]};
#z z a b c d e fが表示される
print "@chars\n";
#要素数「8」が表示される
print "$num\n";
配列の個数を表示する(2次元配列)
配列の個数は、左辺のスカラー変数に代入することで数でてきます。代入が無いと要素そのものが出力されます。
2次元配列は結構面倒くさいです
my @spec = ();
my @chars = qw/z z a b c d e f/;
push(@spec, \@chars);
my @chars = qw/a b c d e f g/;
push(@spec, \@chars);
my @chars = qw/q w e r t y/;
push(@spec, \@chars);
#-------------------------------------------------------------------------------------------
#二次元配列は普通の配列に、配列のリファレンス並んでいる
#配列の個数のスカラー変数に代入
my $num;
#要素数「8」が表示される
$num = @{$spec[0]};
print "要素数:$num\n";
#要素数「8」が表示される
$num = @{$spec[1]};
print "要素数:$num\n";
#要素数「8」が表示される
$num = @{$spec[2]};
print "要素数:$num\n";
#-------------------------------------------------------------------------------------------
#配列の最大インデックスは、変数名に『$#』を添えて表記します。
#インデックス数「7」が表示される
print "インデックス数:$#{$spec[0]}\n"; # 2次元配列変数からの@spec 0行目の最大インデックス
#インデックス数「6」が表示される
print "インデックス数:$#{$spec[1]}\n"; # 2次元配列変数からの@spec 1行目の最大インデックス
#インデックス数「5」が表示される
print "インデックス数:$#{$spec[2]}\n"; # 2次元配列変数からの@spec 1行目の最大インデックス
#-------------------------------------------------------------------------------------------
#2次元配列の0行目「z z a b c d e f」が表示される
for (my $i = 0; $i <= $#{$spec[0]}; $i++) {
print ${$spec[0]}[$i], "\n"; # 左は、$spec[0]->[$i]や$bbb[0][$i]と等価
}
#2次元配列の1行目「a b c d e f g」が表示される
for (my $i = 0; $i <= $#{$spec[1]}; $i++) {
print ${$spec[1]}[$i], "\n"; # 左は、$spec[1]->[$i]や$bbb[0][$i]と等価
}
#2次元配列の1行目「a b c d e f g」が表示される
for (my $i = 0; $i <= $#{$spec[1]}; $i++) {
print ${$spec[2]}[$i], "\n"; # 左は、$spec[2]->[$i]や$bbb[0][$i]と等価
}
----