Perl@Perlの基本を勉強するよ! – Part2 –


はじめに

みなさんこんにちは。のぶです。

今日もPerlの勉強をするので、メモです!
いつ書いたものか忘れちゃたけど
書き残しがあったので、投稿しておきます。

配列をソートする

ソートはsort関数を使用する
単に文字コードを小さい順にソートする。
数値をソートしたい場合は、

sort BLOCK LIST

という形式にしてあげる。

my @array = (12,22,34,3,6,126,745,99,9);

my @sorted= sort(@array);
print join(',', @sorted);
# 出力 => 12,126,22,3,34,6,745,9,99
# これだと文字コードサイズ順。

@sorted = sort {$a <=> $b} @array;
print join(',', @sorted) , "\n";
# 出力 => 3,6,9,12,22,34,99,126,745
# 数値のソート

@sorted = reverse (sort {$a <=> $b} @array);
print join(',', @sorted) , "\n";
# 出力 => 745,126,99,34,22,12,9,6,3
# 数値を降順にソート

Grepを使ってみる

配列の中から正規表現に一致する値を引っ張ってこれる。

my @array = ("Perl", "にほんご", "のぶ", "のぶp", "んんん" );

my @found = grep(/p/i, @array);
print join(',', @found), "\n";
# iを付けると大文字小文字を区別しない
# 出力結果 => Perl,のぶp

@found = grep(/ん/, @array);
print join(',', @found), "\n";
# 日本語も出来ました
# 出力結果 => にほんご,んんん

@found = grep(//, @array);
print join(',', @found), "\n";
# 何もしていしないと、全部出力される
# 出力結果 => Perl,にほんご,のぶ,のぶp,んんん

おわりに

今回は短いけどこれで終わりです。
Perlは最近ずっと触っているし、次はJava!!!!
Java!!!Play!!!

Perl@Perlの基本を勉強するよ!


はじめに

みなさんこんにちは。のぶです。
Perlを触ることになったので、
勉強しながらメモしていくことにします。

普通のメモです!メモ!

変数の種類

スカラー変数

スカラー => 数値、文字列 単一の値
『$』を付けて宣言する

my $hensuu;

配列

『@』を付けて宣言する

my @hairetu = (0,1,2);
# 配列をそのまま出力
print @hensu;
# 要素を1つだけ取り出して出力
print $hensu[0];

要素を1つだけ取り出したいときは、その値がスカラー値になるので、『$』を付ける。(忘れそう・・)

ハッシュ

ハッシュ => 連想配列のこと
『%』を付けて宣言する

my %hassyu= ("a" => 0, "b" => 1, "c" => 2);
# ハッシュをそのまま出力
print %hassyu;
# 要素を1つだけ取り出して出力
print $hassyu{"a"};

ハッシュも配列と同じように
要素を1つだけ取り出したいときは、その値がスカラー値になるので、『$』を付ける。
指定するキーは波括弧で囲む。

比較演算子

比較演算子は数値比較と文字列比較で異なる。
数値の比較は 『 == != > = <= 』、
文字列の比較は 『 eq ne gt lt ge le 』
100%忘れるので表にしておく

数値比較 文字列比較 意味
a == b a eq b a と b は等しい
a != b a ne b a と b は等しくない
a < b a lt b a より b が大きい
a > b a gt b a より b が小さい
a <= b a le b a より b は大きいまたは等しい
a >= b a ge b a より b は小さいまたは等しい

条件分岐

if文の書き方

my $a = 10;
my $b = 20;

# 普通の書き方
if($a == $b) {
  print "a と b は等しい\n";
}
elsif($a < $b) {
  print "a より b は小さい\n";
}
# 出力結果
# a より b は小さい

# 参考演算子
my $c = 10;
my $d = 10;
my $e = ($c == $d) ? "c と d は等しい\n" : "c と d は等しくない\n";
print $e;

# 出力結果
# c と d は等しい

else if 文は elsif と書く。(慣れない・・)

配列のループ処理

my @hairetu = (0,1,2,3,4,5);

foreach my $a (@hairetu) {
  print $a;
}
print "\n";

foreach (@hairetu) {
  print $_;
}
print "\n";

for (@hairetu) {
  print $_;
}
print "\n";

# 出力結果は全部一緒
# 012345
# 012345
# 012345

foreach文とfor文は大体一緒で同じような使い方が出来る。
『$_』という変数に自動的に出力を格納する。

ハッシュのループ処理

my %hassyu = ("a" => 0, "b" => 1, "c" => 2, "d" => 3);

foreach my $key(keys(%hassyu)) {
    print $hassyu{$key} . "\n";
}

# 出力結果
# 2
# 0
# 1
# 3

keysでハッシュのキーを引っ張ってきて
出力時に引っ張ってきたキーを指定して出力。
結果は配列もハッシュも順不同。

おわりに

初歩的なことをメモしていきましたが
これ以外にもPerl特有の書き方だったり、処理の動きだったり
覚えなきゃいけないことがたくさんあります。

ハッシュのリファレンスとかなんだろ・・・笑

ドットインストールで一通り勉強を終えたので、これから本読みです。

以上。ありがとうございました。

参考にしたサイト