こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

-広告-

解決済みの質問

基本的なPerlについて

Perl初心者です。
以下のサンプルコード中の「->」「=>」「%$」「@$」はそれぞれ何というものでしょうか。

#!/usr/bin/perl
use Net::POP3;

#POPサーバに接続
my $pop = Net::POP3->new('サーバのホスト名', Timeout=> 120) || die "Cound\'t Connect to POP server\n";
$pop->login('ユーザ名', 'パスワード') || die "Authentication failed\n";

#メールのリストを取得(メッセージ番号 => サイズ からなるハッシュリファレンス)
my $list_href = $pop->list;

#メールを一通づつ取得
foreach my $msg_id (keys %$list_href){
my $message = $pop->get($msg_id); #メールを取得
print @$message;
$pop->delete($msg_id); #メールを削除
}

$pop->quit;

よろしくお願いいたします。

投稿日時 - 2016-01-20 11:59:38

QNo.9114172

暇なときに回答ください

質問者が選んだベストアンサー

問われているのが名称なのか機能なのかわかりませんが、どっちも簡単に…

「@$」「%$」は変数名につけるPrefixです。
リファレンス変数「$○○」の実データが配列なら「@」、連想配列なら「%」を付けないと正常にデリファレンスできないので、「@$○○」のような記述になります。

「->」はアロー演算子です。配列にアクセスするときや外部モジュール内の関数にアクセスするときに使います。

「=>」は連想配列の初期化をするときに使います (コンマ区切りより見やすい)。名前は…知りません。

投稿日時 - 2016-01-20 17:11:15

お礼

すみません、遅くなりました。
非常にわかりやすい説明をしていただきまして、ありがとうございました。

投稿日時 - 2016-02-10 04:41:07

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(3)

ANo.3

>変数はサブルーチン内(関数)しか保持されない
、すんません、訂正します。内包でいけます。

use strict;

my $Hash_1 = {}; ###HASH型アドレス
print $Hash_1,"\n";

my $Array_1 = [];###ARRAY型アドレス
print $Array_1,"\n";

my $Sub_1= Them_1('Hello ');
print $Sub_1,"\n";###CODE型アドレス

sub Them_1{
my $self_1 = shift; ###内包データー('Hello ')
sub{ my $self_2 = shift; ###CODEデーター('World')
print"$self_1 $self_2\n";};
}

@$Array_1 = (0,9,8,7,6,5,4);###ARRAYデーター

%$Hash_1 = ('qqq'=>'QQQ',
'Arr'=>$Array_1,'sub'=>$Sub_1);###HASHデーター

print $Hash_1->{Arr}->[6],"\n";
print @{$Hash_1->{Arr}},"\n";
print $Hash_1->{qqq},"\n";
$Hash_1->{sub}->('World');

投稿日時 - 2016-01-24 21:31:09

お礼

すみません、遅くなりました。
わざわざサンプルコードまで書いていただきまして、ありがとうございました。
せっかくサンプルコードを書いていただいたのですが、今回はわかりやすさという点でBAを見送らせていただきます。
今後とも機会がありました際、またよろしくお願い致します。

投稿日時 - 2016-02-10 04:48:05

ANo.2

「perl 参照」でググればいいですよ

変数はサブルーチン内(関数)しか保持されない

perlは配列なども渡せますが効率的じゃないので

外部からデーターにアクセスするには参照を使います

操って理解したならデーターを作ってアクセスしてください

use strict;

my $Hash_1={}; ### HASH型を持つアドレス

%$Hash_1=('suji' => 123,'moji' => 'abc'); ### データー

print $Hash_1->{'suji'},"\n";

print $Hash_1->{'moji'},"\n";

print %$Hash_1,"\n";

my $Array_1=[]; ### ARRAY型を持つアドレス

@$Array_1=(123,'abc'); ### データー

print $Array_1->[0],"\n";

print $Array_1->[1],"\n";

print @$Array_1,"\n";

$Hash_1や$Array_1を渡せばどこからでもデーターにアクセスできます

小難しいかもしれないけど、突破出来れば楽しいと思います

投稿日時 - 2016-01-20 21:53:56

お礼

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

投稿日時 - 2016-02-10 04:48:23

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-