@とAは同じことをしているのですが、"{}"と"()"で意味が異なるのです。
前者"{}"はハッシュのリファレンスと返し、
後者"()"はハッシュの実体を返します。
@
$rhash = {
a => 1,
b => 2,
c => 3,
d => 4
};
print $$rhash{c}, "\n";
A
%hash = (
a => 1,
b => 2,
c => 3,
d => 4
);
$rhash = \%hash ;
print $$rhash{c}, "\n";
@
$rhash = {
a => 1,
b => 2,
c => 3,
d => 4
};
print $$rhash{c}, "\n";
A
%hash = (
a => 1,
b => 2,
c => 3,
d => 4
);
$rhash = \%hash ;
print $$rhash{c}, "\n";
my $str = 999;
# 変数"$str"のリファレンス(アドレス)を取得する。
my $pstr = \$str;
# リファレンス(アドレス)の示している内容を表示する。
print $$pstr, "\n";
print $str, "\n";
int n = 999;
int* pn = &n;
printf("%d\n", *np);
printf("%d\n", n);
use DBI;
use Encode;
# データベース接続情報を設定
$dbname = "maomao_db";
$host = "localhost";
$user = "maomao";
$password = "maomao";
# データベースへの接続。ここで、PgPP という名前の DBD を指定しています。
$conn = DBI->connect("dbi:PgPP:dbname=$dbname;host=$host", $user, $password) or die;
#オートコミットをオフにします。
$conn->{AutoCommit} = 0;
#エラーメッセージの自動表示を抑止します。
$conn->{PrintError} = 0;
$sql = "INSERT INTO department(id, name) VALUES (?, ?);";
# SQL の発行
$sth = $conn->prepare($sql);
#トランザクション制御のためevalでdieをトラップします。
eval {
#RaiseErrorに"1"を設定することで、エラー発生時に自動的にdieするようになります。
#→自動的に実行されるdieは次の通り die("$class $method failed $DBI::errstr")
$sth->{RaiseError} = 1;
$sth->execute(7, "BBB");
$sth->execute(8, "AAA");
};
if ($@) {
#・rollbackをすると、"$@"の内容がクリアされてしまうので、順番に注意
#・DBのエンコーディングはUTF8のため(?)、エラーメッセージはUTF8になります。
# ここでは、DOSプロンプトで実行しているためShift-JISに変換しています。
warn "Transaction aborted because". encode('shift-jis', decode('utf-8', $@ ."\n"));
$conn->rollback;
} else {
print "SUCCESS: insert.\n";
$conn->commit;
}
$sth->finish;
$conn->disconnect;
C:\>ppm
PPM interactive shell (2.1.6) - type 'help' for available commands.
PPM> install DBD::PgPP
Install package 'DBD-PgPP?' (y/N): y
Installing package 'DBD-PgPP'...
Bytes transferred: 22178
Installing C:\xampp\perl\html\site\lib\DBD\PgPP.html
Installing C:\xampp\perl\site\lib\DBD\PgPP.pm
PPM>
CREATE TABLE department
(
id integer NOT NULL,
"name" character varying(255) NOT NULL,
PRIMARY KEY (id)
);
use DBI;
use Encode;
# データベース接続情報を設定
$dbname = "maomao_db";
$host = "localhost";
$user = "maomao";
$password = "maomao";
# データベースへの接続。ここで、PgPP という名前の DBD を指定しています。
$conn = DBI->connect("dbi:PgPP:dbname=$dbname;host=$host", $user, $password ) or die;
$sql = "select * from department";
# SQL の発行
$sth = $conn->prepare($sql);
$sth->execute or die "Can not execute statement: ". $sth->errstr;
# レコード行をハッシュへのリファレンスとして取得します。
while ($href = $sth->fetchrow_hashref) {
print $href->{"id"} . "\n";
# UTF-8→shift-jisへ変換
print encode('shift-jis', decode('utf-8', $href->{"name"} ."\n"));
}
$sth->finish;
$conn->disconnect;
#文字列に半角カタカナが存在するか?
#Perlの正規表現を使用して、渡された文字列に半角カタカナがあるかチェックします。(UTF-8向け)
#Perl 正規表現 半角カタカナ UTF8
$str = "aaaaアあああああ";
if ( $str =~ /(?:\xEF\xBD[\xA1-\xBF]|\xEF\xBE[\x80-\x9F])/ ) {
print encode('shift-jis', decode('utf-8', "文字列に半角カタカナが存在する\n"));
} else {
print encode('shift-jis', decode('utf-8', "文字列に半角カタカナが存在しない\n"));
}
#↓
#"文字列に半角カタカナが存在する"
#渡された文字列に非半角数字があるか?
#Perlの正規表現を使用して、渡された文字列に非半角数字があるかチェックします。
#Perl 正規表現 非半角数字
$str = "0123456789a";
if ( $str =~ /[^0-9]/ ) {
print encode('shift-jis', decode('utf-8', "文字列に半角数字でない文字が存在する\n"));
} else {
print encode('shift-jis', decode('utf-8', "文字列に半角数字でない文字が存在しない\n"));
}
#↓
#"文字列に半角数字でない文字が存在しない"
#渡された文字列に非半角英字があるか?
#Perlの正規表現を使用して、渡された文字列に非半角英字があるかチェックします。(UTF-8向け)
#Perl 正規表現 非半角英字 UTF8
$str = "abcdefghijklmnopqrstuvwxyz";
if ( $str =~ /[^A-Za-z]/ ) {
print encode('shift-jis', decode('utf-8', "文字列に半角英字でない文字が存在する\n"));
} else {
print encode('shift-jis', decode('utf-8', "文字列に半角英字でない文字が存在しない\n"));
}
#↓
#"文字列に半角英字でない文字が存在しない"
#渡された文字列に非ASCII文字があるか?
#Perlの正規表現を使用して、渡された文字列に非ASCII文字があるかチェックします。(UTF-8向け)
#Perl 正規表現 非ASCII文字 UTF8
$str = " abcdefghijklmnopqrstuvwxyz!#$&'()[]@";
if ( $str =~ /[^\x20-\x7E]/ ) {
print encode('shift-jis', decode('utf-8', "文字列にASCII文字でない文字が存在する\n"));
} else {
print encode('shift-jis', decode('utf-8', "文字列にASCII文字でない文字が存在しない\n"));
}
#↓
#"文字列にASCII文字でない文字が存在しない"
#全て全角文字か?
#Perlの正規表現で、渡された文字列が全て全角文字かチェックします。(UTF-8向け)
#Perl 正規表現 全角文字 UTF8
$str = "ABCDEFXYZあいうえおカキクケコ@!+*_";
if ( $str !~ /(?:\xEF\xBD[\xA1-\xBF]|\xEF\xBE[\x80-\x9F])|[\x20-\x7E]/ ) {
print encode('shift-jis', decode('utf-8', "すべてが全角である\n"));
} else {
print encode('shift-jis', decode('utf-8', "すべてが全角ではない\n"));
}
#↓
#"すべて全角である"
#全て半角英数字か?
#Perlの正規表現で、渡された文字列が全て半角英数字かチェックします。(UTF-8向け)
#Perl 正規表現 半角英数字 UTF8
$str = "abcdefghijklmnopqrstuvwxyz0123456789";
if ( $str =~ /^[0-9A-Za-z]+$/ ) {
print encode('shift-jis', decode('utf-8', "すべてが半角英数字である\n"));
} else {
print encode('shift-jis', decode('utf-8', "すべてが半角英数字ではない\n"));
}
#↓
#"すべて半角英数字である"
#全て全角ASCIIか?
#Perlの正規表現で、渡された文字列が全て全角ASCIIかチェックします。(UTF-8向け)
#Perl 正規表現 全角ASCII UTF8
$str = "ABCDEFGHIJK1234567890!#$";
if ( $str =~ /^(?:\xEF\xBC[\x81-\xBF]|\xEF\xBD[\x80-\xA0])+$/ ) {
print encode('shift-jis', decode('utf-8', "すべてが全角ASCIIである\n"));
} else {
print encode('shift-jis', decode('utf-8', "すべてが全角ASCIIではない\n"));
}
#↓
#"すべて全角ASCIIである"
#全て半角カタカナか?
#Perlの正規表現で、渡された文字列が全て半角カタカナかチェックします。(UTF-8向け)
#Perl 正規表現 半角カタカナ UTF8
$str = "。アイウエオカキクケコサシスセソタチツテトナニヌネノハイフヘホマミムメモラリルレロヤユヨワン゚";
if ( $str =~ /^(?:\xEF\xBD[\xA1-\xBF]|\xEF\xBE[\x80-\x9F])+$/ ) {
print encode('shift-jis', decode('utf-8', "すべてが半角カタカナである\n"));
} else {
print encode('shift-jis', decode('utf-8', "すべてが半角カタカナではない\n"));
}
#↓
#"すべて半角カタカナである"
$str = "アイウエオワイウエオン";
if ( $str =~ /^(?:\xE3\x82[\xA1-\xBF]|\xE3\x83[\x80-\xB6])+$/ ) {
print encode('shift-jis', decode('utf-8', "すべてが全角カタカナである\n"));
} else {
print encode('shift-jis', decode('utf-8', "全角カタカナでない文字がある\n"));
}
文字エンコーディング:UTF8対応です。
$str = "あいうえおわいうえおん";
if ( $str =~ /^(?:\xE3\x81[\x81-\xBF]|\xE3\x82[\x80-\x93])+$/ ) {
print encode('shift-jis', decode('utf-8', "すべてが全角ひらがなである\n"));
} else {
print encode('shift-jis', decode('utf-8', "すべてが全角ひらがなではない\n"));
}
#↓
#"すべて全角ひらがなである"
$str = " abcdefghijklmnopqrstuvwxyz!#$&'()[]@";
if ( $str =~ /^[\x20-\x7E]+$/ ) {
print encode('shift-jis', decode('utf-8', "すべてがASCIIである\n"));
}else{
print encode('shift-jis', decode('utf-8', "すべてがASCIIでない\n"));
}
use strict;
use Text::CSV_XS;
use IO::File;
my $csv = Text::CSV_XS->new({binary => 1});
my $fh = IO::File->new("c:\\okinawa.csv", 'r') or die;
my $i=1;
while (not $fh->eof) {
my $row = $csv->getline($fh);
print "Row : $i \n";
my @fields = @$row;
foreach my $field (@fields) {
print "$field\n";
}
$i++;
}
#!"C:\xampp\perl\bin\perl.exe"
use strict;
use File::Basename;
my $filepath = "c:\\okinawa.csv";
my $file = basename($filepath);
my $filesize = -s $filepath;
open(F,$filepath) || die "Can't open $filepath";
print "Content-type: application/octet-stream; name=\"$file\"\n";
print "Content-Length: $filesize\n";
print "Expires: 0\n";
print "Cache-Control: must-revalidate, post-check=0,pre-check=0\n";
print "Pragma: private\n";
print "Content-Disposition: attachment; filename=\"$file\"\n";
print "\n";
binmode(F);
binmode(STDOUT);
while(<F>) {print;}
close(F);
exit;
日 | 月 | 火 | 水 | 木 | 金 | 土 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 |