perl学习笔记(四)


#!/usr/bin/perl

use 5.010;

package A;
$a = 10;
sub print_var{
$a += 10;
}
package B;
$a = 20;

package A;
say $A::a;
say &A::print_var();
say &{A::print_var}();

say "------通过符号引用的方式获取变量和函数------";
$pkg = 'A';
$varname = 'a';
$method_name = 'print_var';
say ${"$pkg::$varname"};
say ${"A::a"};
say &{"A::print_var"}();
say &{"$pkg::$method_name"}();

say "------------面向对象-------";
package Employee;
sub new{
my($name,$age,$height) = @_;
%emhash = (
name => $name,
age => $age,
height => $height,
);
bless \%emhash,'Employee'; #在对象上标注包名
return \%emhash;
}
sub promote{
my($emp) = @_;
$emp->{age} = $emp->{age}-10;
}
$employee = Employee::new("giggs",40,185);
say $employee->{age};#40
Employee::promote($employee);#调用对象的实例方法
say $employee->{age};#30
$employee->promote();#调用对象的实例方法
say $employee->{age};#20
if(ref($employee)){#引用
say $employee->promote();#10
say ref($employee);
}else{
Employee::promote($employee);
}

say "------------面向对象demo---------------------------------";
use packages::Cocoa;
#$cup = new Cocoa; #构造对象
#$cup = Cocoa::new();
#$cup = Cocoa->new('giggs',40,180);
#say $cup->{name};#访问属性
#say $cup->{age};
#say $cup->{height};

$cup = Cocoa->new();
#方法调用 ->操作符为间接调用
$cup->setImports("javax.xml.bind.annotation.XmlAccessType","javax.xml.bind.annotation.XmlAccessorType","javax.xml.bind.annotation.XmlType");
$cup->declareMain("DBUtils","SessionFactory","userImplements");
$cup->printContent();
$cup->closeMain();
#Cocoa::setImports($cup,"javax.xml.bind.annotation.XmlAccessType","javax.xml.bind.annotation.XmlAccessorType","javax.xml.bind.annotation.XmlType");
#Cocoa::declareMain($cup,"DBUtils","SessionFactory","userImplements");
#Cocoa::printContent($cup);
#Cocoa::closeMain($cup);


say +((1,2,3)[1,2,3])[1,2,3];

say "------------面向对象demo--继承----";
#类方法通过@ISA数组继承,变量的继承必须明确设定
use packages::Coffee;
$cup = Coffee->new();
say "---init values---------";
say "Coffee:$cup->{Coffee}";
say "Bean:$cup->{Bean}";
say "----start change Coffee Type----------";
$cup->setCoffeeType("CCCoffee");
say "----Coffee type is now 《$cup->{Coffee}》----";
say "----start change Bean Type----------";
$cup->setBeanType("Mixed");
say "----Bean type is now《$cup->{Bean}》----";


say "-------------绑定-------------------------";
use packages::AC;
tie $tem,'AC'; #tie 变量,类名,列表;
$x = $tem;
say $x;
$tem = 20; #(tired $tem)->STORE(20);
say $tem;
untie $tem;#undef $tem;#
$x = $tem;
say $x;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值