職案人

求職・歴史・仏教などについて掲載するつもりだが、自分の思いつきが多いブログだよ。適当に付き合って下さい。

perlのハッシュについて

2018年01月19日 | perl
perlのハッシュについて

【環境条件】
Eclipse 4.4(ルナ)
XAMPP 1.8.3 
Perlは既にインストール済み

【ハッシュ】
1)ハッシュとは
ハッシュは他のプログラミング言語では連想配列とも呼ばれているもので、複数の値を管理することは配列と同じですが、要素を順に並べてインデックスで管理するのではなく、格納される値に対するキーを別途設定しインデックスの代わりにキーで管理する。

・サンプルプログラム「test01.pl」
use strict;
use warnings;
my %address;#ハッシュ宣言

$address{'katou'}= "Tokyo";#キーと値の取得
$address{'山田'}= "大阪";#キーと値の取得

print "$address{'katou'} \n";
print "$address{'山田'} \n";

・結果
Tokyo
大阪

2)ハッシュの宣言と要素へのアクセス
書式
ハッシュ宣言→%ハッシュ名
キーと値の取得→$ハッシュ名{キー} = 値;

3)ハッシュの初期化
書式
my @ハッシュ名 = (キー1,値1,キー2,値2,...,キーn,値n);
または
my @ハッシュ名 = (
キー1 => 値1,
キー2 => 値2,
... ,
キーn => 値n
);

・サンプルプログラム「test02.pl」
use strict;
use warnings;
my %address = (
"鈴木" => "東京都千代田区",
"山田" => "東京都葛飾区"
);

print "$address{'鈴木'}\n";
print "$address{'山田'}\n";
・結果
東京都千代田区
東京都葛飾区

4)ハッシュ要素の変数展開
ハッシュは、ハッシュ全体を表す「%ハッシュ名」のような記述を行っても展開されない。
・サンプルプログラム「test03.pl」
my %address = (
"鈴木" => "東京都千代田区",
"山田" => "東京都葛飾区"
);

print "%address\n";
print "$address{'鈴木'}\n";

・結果
%address
東京都千代田区

5)繰り返し処理
keys関数→対象となるハッシュに含まれている全てのキーをリストの形で返す
each関数→対象となるハッシュに含まれている要素を順に取り出します

・サンプルプログラム「test04.pl」
my %address = (
"鈴木" => "東京都千代田区",
"山田" => "東京都葛飾区"
);

#key文
foreach my $key(keys(%address)){
print "$address{$key}\n";
}
#each文
while (my ($key, $value) = each(%address)){
print " key=$key, value=$value\n";
}
・結果
東京都千代田区
東京都葛飾区
key=鈴木, value=東京都千代田区
key=山田, value=東京都葛飾区

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

perlのリストと配列

2018年01月12日 | perl
perlのリストと配列

【環境条件】
Eclipse 4.4(ルナ)
XAMPP 1.8.3 
Perlは既にインストール済み
--リスト--


1)リストとは
スカラーに順番をつけて並べたもので、そのリストの中でのスカラーの位置によって自由にアクセスすることができる。

書式
(変数1, 変数2, 変数3, ...) = (値1, 値2, 値3, ...);

サンプル「test01.pl」
use strict;
use warnings;

my ($var1, $var2, $var3);

($var1, $var2, $var3) = ("月曜", "火曜", "水曜");

print "$var1\n";
print "$var2\n";
print "$var3\n";

・実行
月曜
火曜
水曜

2)リストの要素に変数は?
書式
my ($str1, $str2);
my $name = "伊藤";

($str1, $str2) = ($name, "東京都");

・サンプル「test02.pl」
my ($str1, $str2);
my $name = "伊藤";

($str1, $str2) = ($name, "東京都");

print "$str1\n";
print "$str2\n";

・実行
伊藤
東京都

--配列--

1)配列とは
配列は同じような目的で使用される複数の値を管理する場合に使用される

2)書式
my @配列;
$変数[インデックス]=値;
サンプルプ「test03.pl」
use strict;
use warnings;
my @seiseki;
$seiseki[0] = 80;
$seiseki[1] = 75;
$seiseki[2] = 69;

for (my $i = 0; $i
--演算子--

1)qw演算子
一覧の文字列を空白文字を区切りとして分割したリストを返してくれます

書式
qw/ 対象となる文字列 /

サンプルプ「test06.pl」
use strict;
use warnings;
my @name = qw/ 伊藤 工藤 山田 /;

for (my $i = 0; $i < 3; $i++){
print "$name[$i]\n";
}
・実行
伊藤
工藤
山田

2)範囲演算子
書式
my @count = (開始数..終了数);

サンプルプ「test07.pl」
use strict;
use warnings;
my @num = (10..14, 20);
my $count = @num;

for (my $i = 0; $i < $count; $i++){
print "$num[$i]\n";
}
・実行
10
11
12
13
14
20

3)配列要素の確認
書式
my @array = ("要素1", "要素2");
my $length = @array;

サンプルプ「test08.pl」
use strict;
use warnings;
my @array = ("1月", "2月");
my $length = @array;

print "要素数 $length\n";
print @array;

・実行
要素数 2
1月2月

4)配列要素の最後を書き換える
「$#配列名」→配列に含まれる最後のインデックスが変更されます

サンプルプ「test09.pl」
use strict;
use warnings;
my @str = ("1月", "2月", "6月");

$str[$#str] = "3月";
for (my $i = 0; $i <= $#str; $i++){
print "$str[$i]\n";
}

・結果
1月
2月
3月

5)文字列中に含まれる配列の変数展開
サンプルプ「test10.pl」
my @name = ("加藤", "山田", "林");
print "登録されているのは @name です\n";#→変換される
print '登録されているのは @name です';#→ダメ

print "\n";
$" = ",";#→特別変数「$"」は区切り文字を決める時に使う
print "登録されているのは @name です\n";

・結果
登録されているのは 加藤 山田 林 です
登録されているのは @name です
登録されているのは 加藤,山田,林 です

6)配列と繰り返し処理・・
for文
my @array = ("加藤", "山田", "林");
for (my $i = 0; $i <= $#array; $i++){
print "$array[$i]¥n";
}
または
foreach文
my @name = ("加藤", "山田", "林");
foreach (@name){
print "$_\n";
}
・結果
加藤
山田
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

perlの繰り返し処理

2018年01月09日 | perl
perlの繰り返し処理


【環境条件】
Eclipse 4.4(ルナ)
XAMPP 1.8.3 
Perlは既にXAMPPにインストール

1)while文
書式
while (条件式){
実行する処理1;
実行する処理2;
}

サンプル「while.pl」
use strict;
use warnings;

my $count;

$count = 0;
while ($count < 2){
print "count = $count \n";
$count ++;
}
print "以上です";

結果
count = 0
count = 1
以上です

2)until文
while文が条件式が真の間ブロック内の処理を繰り返すのに対して、until文は条件式が偽の間ブロック内の処理を繰り返すもの

書式
until (条件式){
実行する処理1;
実行する処理2;
}

サンプル「until.pl」
use strict;
use warnings;
my $count;

$count = 0;
until ($count >= 2){
print "count = $count \n";
$count ++;
}

print "以上です";

結果
count = 0
count = 1
以上です

3)for文
指定した回数だけ繰り返す場合
書式
for (初期化; 条件式; インクリメント){
実行する処理1;
実行する処理2;
}
サンプル「for.pl」
use strict;
use warnings;
for (my $count = 0; $count < 5; $count++){
print "count = $count \n";
}

結果
count = 0
count = 1
count = 2
count = 3
count = 4

4)foreach文
foreachは値の集合であるリストを指定すると、リストに含まれる値の数だけ順に繰り返しを行う
書式
foreach 変数 (リスト){
実行する処理1;
実行する処理2;
}
サンプル「foreach.pl」
use strict;
use warnings;
my @fruit = ("りんご", "メロン", "イチゴ");

foreach my $name (@fruit){
print "$name\n";
}
または、
my @fruit = ("りんご", "メロン", "イチゴ");

for my $name (@fruit){
print "$name\n";
}

結果
りんご
メロン
イチゴ

5)last演算子
繰り返し処理が行われている時に強制的に繰り返し処理を終了さあせる
サンプル「last.pl」
use strict;
use warnings;
my $count = 1;

while (1){
print "$count\n";
$count++;

if ($count > 5){
last;←last演算子
}
}
print "終了\n";

結果
1
2
3
4
5
終了

6)next演算子
next演算子はその時実行している繰り返しを最後の位置までスキップさせて次の繰り返しに進みます
サンプル「next.pl」
use strict;
use warnings;
my $count = 0;

while ($count <= 5){
$count++;

if ($count == 2){←2だけ飛ばす
next;
}

print "$count\n";

#next演算子が実行されるとこの位置に進む
}
print "終了\n";
結果
1
3
4
5
6
終了

7)redo演算子
redo演算子はその時の繰り返しを先頭の位置まで戻し改めて繰り返し処理を実行する
サンプル「next.pl」
use strict;
use warnings;
my $count = 0;

while ($count <= 5){
#redo演算子が実行されるとこの位置に進む、この時、$count に1が入る

$count++;

if ($count == 2){
redo;
}

print "$count\n";
}
print "終了\n";
結果
1
3
4
5
6
終了

8)繰り返し処理にラベルを付ける
書式
ラベル: while (条件式){
# 何らかの処理
}

#ラベル
CALC: for (my $i = 1; $i < 10; $i++){
for (my $j = 1; $j < 10; $j++){
my $calc = $i * $j;
print "$i * $j = $calc\n";

last CALC if $calc > 10;
}
}
print "終了\n";
結果
1 * 1 = 1
1 * 2 = 2
1 * 3 = 3
1 * 4 = 4
1 * 5 = 5
1 * 6 = 6
1 * 7 = 7
1 * 8 = 8
1 * 9 = 9
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
2 * 5 = 10
2 * 6 = 12
終了

8)式修飾子
繰り返し処理においても実行する処理が1つの場合は式修飾子が使用出来る
書式
真の時に実行する処理 while 条件式;
真の時に実行する処理 until 条件式;
実行する処理 foreach 条件式;

サンプルプログラム
my @fruit = ("りんご", "メロン", "イチゴ");
print "$_¥n" foreach @fruit;

または
my @fruit = ("りんご", "メロン", "イチゴ");

foreach (@fruit){
print "$_¥n";
}

結果
りんご
メロン
イチゴ

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

perlのif文について

2018年01月05日 | perl
perlのif文について


【環境条件】
Eclipse 4.4(ルナ)
XAMPP 1.8.3 
Perlは既にXAMPPにインストール

条件分岐のIF文

■if文の構造

if (条件式){
条件式が真の時に実行する処理1;
条件式が真の時に実行する処理2;
}

サンプルプログラム「if.pl」←Eclipse 4.4用
use strict;
use warnings;

my $seiseki;

$seiseki = 75;
print "得点 = $seiseki\n";
if ($seiseki > 60){
print "合格です\n";
print "おめでとう\n";
}

print "お疲れ様\n";

$seiseki = 47;
print "得点 = $seiseki\n";
if ($seiseki > 60){
print "合格です\n";
print "おめでとう\n";
}

print "お疲れ様\n";
【結果】
得点 = 75
合格です
おめでとう
お疲れ様
得点 = 47
お疲れ様

■関係演算子
if(条件式)の条件式で使われる演算子。
関係演算子→a == b、a != b、a > b、a >= b、a = 20){
print "ご利用頂けます\n";
}else{
print "未成年の方はご利用頂けません\n";
}

$old = 34;

if ($old >= 20){
print "ご利用頂けます\n";
}else{
print "未成年の方はご利用頂けません\n";
}
結果
未成年の方はご利用頂けません
ご利用頂けます

■複数の条件分岐(if .. elsif .. else)
if (条件式1) {
条件式1が真の時に実行する処理;
}elsif (条件式2) {
条件式1が偽で条件式2が真の時に実行する処理;
}elsif (条件式3) {
条件式1及び条件式2が偽で条件式3が真の時に実行する処理;
}else{
全ての条件式が偽の時に実行する処理;
}
サンプルプログラム「if3.pl」
use strict;
use warnings;
my $num;

$num = 12;

print "数値 = $num\n";
if ($num >= 20){
print "20以上です\n";
}elsif ($num >= 10){←注意;elsif
print "10以上20未満です\n";
}else{
print "10以下です\n";
}

結果
数値 = 12
10以上20未満です

■unless文
「unless」文は条件式が偽の場合の処理を記述するのに使われる。if文とは反対

構造
unless (条件式){
条件式が偽の時に実行する処理1;
条件式が偽の時に実行する処理2;
}
サンプルプログラム「unless.pl」
use strict;
use warnings;
my $seiseki;

$seiseki = 75;
unless ($seiseki < 60){
print "合格です\n";
print "おめでとう\n";
}

print "お疲れ様\n";

結果
合格です
おめでとう
お疲れ様

■三項演算子
書式
条件式 ? 真の時の値 : 偽の時の値;
サンプルプログラム「sankou.pl」
use strict;
use warnings;

my ($seiseki, $kekka);

$seiseki = 75;
$kekka = $seiseki > 60 ? "合格" : "不合格";
print $kekka;

結果
合格

■式修飾子(if修飾子)
サンプルプログラム「siki.pl」
use strict;
use warnings;

my $count;

$count = 5;
print "$count\n";

$count = $count - 10 if $count > 0;
print "$count\n";

$count = $count - 10 if $count > 0;
print "$count\n";

結果
5
-5
-5
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

perlの演算子について

2017年12月29日 | perl
perlの演算子について

【環境条件】
Eclipse 4.4(ルナ)
XAMPP 1.8.3 
Perlは既にXAMPPにインストール済み

【演算子】
演算子とは→主に四則演算などを行う算術演算子
サンプルプログラム「enzanshi.pl」
use strict;
use warnings;

my $var;

$var = 8 + 3;
print "8 + 3 = $var\n";

$var = 4 * 3;
print "4 * 3 = $var\n";

$var = 4 ** 3;
print "4 ** 3 = $var\n";

$var = 8 / 4;
print "8 / 4 = $var\n";

$var = 7 % 3;
print "7 % 3 = $var\n";

結果
8 + 3 = 11
4 * 3 = 12
4 ** 3 = 64
8 / 4 = 2
7 % 3 = 1

【変数に対する演算】
サンプルプログラム「enzanshi2.pl」
use strict;
use warnings;

my $var;

$var = 8;
print "$var\n";

$var = $var + 7;
print "$var\n";

結果
8
15

【インクリメント及びデクリメント演算子】
サンプルプログラム「enzanshi3.pl」
use strict;
use warnings;

my $var;

$var = 3;
print "$var\n";

$var++;
print "$var\n";

$var--;
print "$var\n";

結果
3
4
3


【前置きと後置きの違い】
前置き: ++変数
$var1 = 10;
$var1 = $var1 + 1;
$var2 = $var1;

後置き: 変数++
$var1 = 10;
$var2 = $var1;
$var1 = $var1 + 1;

サンプルプログラム「enzanshi4.pl」
use strict;
use warnings;

my ($var1, $var2);

$var1 = 9;
$var2 = $var1++;


print "$var1\n";
print "$var2\n";

$var1 = 9;
$var2 = ++$var1;

print "$var1\n";
print "$var2\n";

結果
10
9
10
10

【その他の代入演算子】
代入演算子には「=」以外に他の算術演算子と組み合わせた演算子が用意されている
a += b、a -= b、a *= bなど
サンプルプログラム「enzanshi5.pl」
use strict;
use warnings;

my $var;

$var = 9;
$var += 5;

print "$var\n";

$var /= 2;
print "$var\n";

結果
14
7

【ビット演算子】
数値に対してビット単位で演算を行うための演算子
サンプルプログラム「enzanshi6.pl」
use strict;
use warnings;

my ($src, $dst);

$src = 11;
$dst = $src & 14;
print "$src \& 14 = $dst\n";

$src = 10;
$dst = $src | 12;
print "$src | 12 = $dst\n";

$src = 10;
$dst = $src ^ 12;
print "$src ^ 12 = $dst\n";

$src = 10;
$dst = ~$src;
print "~$src = $dst\n";
結果
11 & 14 = 10
10 | 12 = 14
10 ^ 12 = 6
~10 = 18446744073709551605

【シフト演算子】
ビット演算子の一つで数値の各ビットを左又は右へシフトさせるための演算子です。
サンプルプログラム「enzanshi7.pl」
use strict;
use warnings;

my ($src, $dst);

$src = 11;
$dst = $src << 1;
print "$src << 1 = $dst\n";

$src = 11;
$dst = $src >> 1;
print "$src >> 1 = $dst\n";
結果
11 << 1 = 22
11 >> 1 = 5

【文字列演算子】
文字列に対する操作を行う演算子として文字列の連結と文字列の繰り返しを行う演算子が用意されています
サンプルプログラム「enzanshi8.pl」
use strict;
use warnings;

my ($str1, $str2, $str3);

$str1 = "こんにちは";
$str2 = $str1."伊藤さん";
$str3 = $str1 x 3;
結果
こんにちは
こんにちは伊藤さん
こんにちはこんにちはこんにちは
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする