cpan update

$ sudo cpan
cpan[1]> upgrade

$ cpan Dancer
Reading ‘/home/vagrant/.cpan/sources/authors/01mailrc.txt.gz’
………………………………………………………………….DONE
Reading ‘/home/vagrant/.cpan/sources/modules/02packages.details.txt.gz’
Database was generated on Tue, 11 Sep 2018 09:17:02 GMT
HTTP::Date not available
………….
New CPAN.pm version (v2.16) available.
[Currently running version is v2.00]
You might want to try
install CPAN
reload cpan
to both upgrade CPAN.pm and run the new version without leaving
the current session.

…………………………………………….Killed
あああああああああ、もうubuntuではできん。。centosでやろう。

perl dancer

なんだこりゃ、どうしろってんだ。。。


CPAN(シーパン、Comprehensive Perl Archive Network)とは、Perlのライブラリ・モジュールやその他のPerlで書かれたソフトウェアを集めた巨大なアーカイブで、世界中のサーバにその内容がミラーリングされている。再利用性・汎用性の高いモジュールが登録されており、Perlプログラマができるだけ車輪の再発明をせずに済むための支援環境となっている。登録モジュールの検索システムも提供されているため、Perlプログラマは望む機能を持ったモジュールを容易に入手することができる。

vagrant@vagrant-ubuntu-trusty-64:~/perl$ cpan Dancer
Reading ‘/home/vagrant/.cpan/sources/authors/01mailrc.txt.gz’
………………………………………………………………….DONE
Reading ‘/home/vagrant/.cpan/sources/modules/02packages.details.txt.gz’
Database was generated on Tue, 11 Sep 2018 09:17:02 GMT
HTTP::Date not available
Warning: Your system date is 1 days behind this index file!
System time: Mon Sep 10 07:24:39 2018
Timestamp index file: Tue, 11 Sep 2018 09:17:02 GMT
Please fix your system time, problems with the make command expected.

なんだと!
vagrant@vagrant-ubuntu-trusty-64:~/perl$ sudo ntpdate ntp.nict.jp
11 Sep 13:19:42 ntpdate[20614]: step time server 133.243.238.164 offset 107448.537336 sec
vagrant@vagrant-ubuntu-trusty-64:~/perl$ date
Tue Sep 11 13:21:24 UTC 2018

いいね~

vagrant@vagrant-ubuntu-trusty-64:~/perl$ cpan Dancer
Fetching with HTTP::Tiny:
http://ftp.jaist.ac.jp/pub/CPAN/authors/01mailrc.txt.gz
Reading ‘/home/vagrant/.cpan/sources/authors/01mailrc.txt.gz’
………………………………………………………………….DONE
Fetching with HTTP::Tiny:
http://ftp.jaist.ac.jp/pub/CPAN/modules/02packages.details.txt.gz
Reading ‘/home/vagrant/.cpan/sources/modules/02packages.details.txt.gz’
Database was generated on Tue, 11 Sep 2018 09:17:02 GMT
HTTP::Date not available
………….
New CPAN.pm version (v2.16) available.
[Currently running version is v2.00]
You might want to try
install CPAN
reload cpan
to both upgrade CPAN.pm and run the new version without leaving
the current session.

……………………………………………Killed

perlで正規表現

open(my $in, "<", "test.dat") or die("could not open file.");

while(<$in>){
	$_ =~ s/abc/ABC/;
	print $_;
}

close($in);

vagrant@vagrant-ubuntu-trusty-64:~/app$ perl hello.pl
ABC
def
ghi
123
456

while(<$in>){
	$_ =~ s/abc/ABC/;
	if($_ =~ /[a-z]/){
		print $_;
	}	
}

なるほど、面白い
vagrant@vagrant-ubuntu-trusty-64:~/app$ perl hello.pl
def
ghi

サブルーチンをつくる。

sub max {
	my $max = $_[0];
	if ($_[1] > $max){
		$max = $_[1];
	}
	return $max;
}
print max(2, 8);

サブルーチンという名称ですが、要するに関数ですな。

sub max {
	my $max = shift(@_);
	foreach(@_){
		$max = $_ if $_ > $max;
	}
	return $max;
}
print max(2, 8, 100, 23, 38);

vagrant@vagrant-ubuntu-trusty-64:~/app$ perl hello.pl
100

なんかかなり駆け足できましたが、基礎はこれ位にしてdancerに入りましょう。

perlでファイルの読み書きをしよう

fileをopenします。

open(my $in, "<", "test.dat") or die("could not open file.");

while(<$in>){
	print $_;
}

close($in);

vagrant@vagrant-ubuntu-trusty-64:~/app$ cat test.dat
abc
def
ghi
123
456
789vagrant@vagrant-ubuntu-trusty-64:~/app$ perl hello.pl
abc
def
ghi
123
456
789

open(my $in, "<", "test.dat") or die("could not open file.");
open(my $out, ">", "test.out") or die("could not open file.");

while(<$in>){
	print $out $_;
}

close($in);
close($out);

vagrant@vagrant-ubuntu-trusty-64:~/app$ perl hello.pl
vagrant@vagrant-ubuntu-trusty-64:~/app$ cat test.out
abc
def
ghi
123
456
789

書き込みですな。

ガンガンperlをやろう

# ループ処理
my $i = 0;
while($i < 10){
	print "i = $i\n";
	$i++;
}
&#91;/perl&#93;

vagrant@vagrant-ubuntu-trusty-64:~/app$ perl hello.pl
i = 0
i = 1
i = 2
i = 3
i = 4
i = 5
i = 6
i = 7
i = 8
i = 9

for文
&#91;perl&#93;
for(my $i = 0; $i < 10; $i++){
	print "i = $i\n";
}
&#91;/perl&#93;

おおおおおお、foreachが可笑しなことになってる。。
&#91;perl&#93;
my @colors = qw(red green blue orange pink);

foreach my $color (@colors){
	print "color = $color\n";
}
&#91;/perl&#93;

vagrant@vagrant-ubuntu-trusty-64:~/app$ perl hello.pl
color = red
color = green
color = blue
color = orange
color = pink

ナニコレ?
&#91;perl&#93;
my @colors = qw(red green blue orange pink);

foreach (@colors){
	print "color = $_\n";
}
&#91;/perl&#93;

vagrant@vagrant-ubuntu-trusty-64:~/app$ perl hello.pl
color = red
color = green
color = blue
color = orange
color = pink

これは。。。
&#91;perl&#93;
my %sales = ("tanaka"=>150, "suzuki"=>300, "ohira"=>200);

foreach my $key (keys(%sales)){
		print "sales for $key in $sales{$key}\n"
}

vagrant@vagrant-ubuntu-trusty-64:~/app$ perl hello.pl
sales for tanaka in 150
sales for suzuki in 300
sales for ohira in 200

Perlを思い出そう2

my @sales = (300, 150, 200);
# @sales $#sale: 末尾の添字

print @sales[0..$#sales];

key and value

my %sales = ("tanaka"=>300, "suzuki"=>150, "ohira"=>200);

print $sales{"tanaka"};

条件分岐

my $score = 85;

if ($score >= 80) {
	print("ok!");
}

vagrant@vagrant-ubuntu-trusty-64:~/app$ perl hello.pl
ok!

my $score = 85;
my $name = "Luke";

if ($name eq "Luke") {
	print("I am your father!");
}

vagrant@vagrant-ubuntu-trusty-64:~/app$ perl hello.pl
I am your father!

ああああああ、何やってんだろう。

my $score = 85;
my $name = "Luke";

if (($name eq "Luke") &&($score >= 80)) {
	print("I am your father!");
}

Perlを思い出そう

my $x = 10;
my $y = 10.75;
my $z = 12_2425_241;

my $xx = 10 * 10;
my $yy = 10 % 3;
my $zz = 2 ** 3;

$x++;
$x--;

$x += 5;
my $a = "he\tllo"; # 特殊文字(\n, \t)が使える、変数展開がされる
my $b = 'he\tllo';

print $a;
print $b;

hellohellovagrant@vagrant-ubuntu-trusty-64:~/app$ perl hello.pl
he llohe\tllo

こうも書ける。

my $name = "tom";
my $a = "hello, $name\n"; # 特殊文字(\n, \t)が使える、変数展開がされる
my $b = 'hello';

print $a;
print $b;

# . x 文字の連結

配列変数

my @sales = (150, 200, 300);
my @colors = ('red', 'green');
my @mixed = (150, 'red', 1.5);

print @sales;

my @inc = (1..100);

print @inc;

配列の読み出し

my @sales = (300, 150, 200);

print $sales[1];
my @sales = (300, 150, 200);

print @sales[0..2];

perl hello.pl

use strict;
use warnings;

print("hello world\n");

vagrant@vagrant-ubuntu-trusty-64:~/app$ perl hello.pl
hello world

my $msg;
$msg = "Hello World\n";

print $msg;

こうも書ける。

my $msg = "Studying Perl\n";
print $msg;

Docker Hubにsign upしよう

あれ、昔アカウントを作っていたみたいだ。全く覚えていない。

vagrant@vagrant-ubuntu-trusty-64:~$ sudo docker push hpscript/httpd
The push refers to repository [docker.io/hpscript/httpd]
a722e4d2fe46: Preparing
fa760d3a1093: Preparing
1d31b5806ba4: Preparing
denied: requested access to the resource is denied

ん?
docker tag firstimage YOUR_DOCKERHUB_NAME/firstimage

なるほど。リポジトリ名がddddockerでないと駄目なのね。
あ~ 頭痛くなってきた。