#!/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;
分享到:
相关推荐
Perl是一种强大的脚本编程语言,...以上就是Perl学习笔记中涵盖的一些基础概念和操作。继续深入学习,你将能够编写更复杂的Perl脚本,解决各种实际问题。记得实践是学习编程的关键,多做练习,逐步提升你的Perl技能。
以下是对Perl学习笔记中提到的关键知识点的详细说明: 1. **标量**: 标量是Perl中最基本的变量类型,用于存储单个值,如字符串或数字。变量名前缀是美元符号“$”。例如,`$first_name = "Melanie"`定义了一个名...
Perl学习笔记中的所有脚本文件,https://blog.csdn.net/zgezi/category_10259467.html
### Perl学习笔记参考 #### Perl简介 Perl是一种高级编程语言,全称为Practical Extraction and Report Language,由Larry Wall创建,并持续由他进行更新与维护。Perl最初被设计用于Unix环境下的编程任务,随着...
本书是perl的经典入门书籍,介绍了perl中最基本的概念和语法,是perl入门的好书,我向所有想了解或学习perl语言的朋友推荐本书。书中穿插有perl语法形成的历史和原因,使你能充分感受到perl语言的文化,这也是perl...
Perl确实是一种非常吸引人的程序语言,而之所以这么引人入胜的原因不单单在于他的功能,也在于他写作的方式,或说成为一种程序写作的艺术。即使你只是每天埋首于程序写作的程序设计师,也不再让生活过份单调,至少你...
### Perl 语言学习笔记知识点概览 #### 第一章:Perl 语言简介及基础语法 - **Perl 的定义**:Perl 是 Practical Extraction and Report Language 的缩写,是一种强大的脚本语言,广泛应用于文本处理、系统管理...
### Perl语言学习笔记 #### Perl语言概述 - **高级语言与低级语言**: 在这篇笔记中,作者首先区分了高级语言和低级语言。高级语言指的是脚本语言,这类语言通常不直接操作底层硬件,例如Shell和Awk。低级语言则...
### Perl学习笔记:快速入门与面向对象编程 #### 基础概念介绍 Perl是一种功能强大的脚本语言,被广泛应用于系统管理、网络编程、文本处理等领域。它具有丰富的内置函数和灵活的数据类型,能够方便地处理各种复杂...
Perl是一种强大的脚本编程语言,尤其在文本处理和系统管理任务中广泛应用。...深入学习Perl,可以提升文本处理、系统管理以及自动化任务的效率。通过不断实践和探索,你可以掌握这个强大工具的所有潜力。
### Perl学习笔记关键知识点 #### 1. Perl简介 - **定义**:Perl是一种脚本语言,被设计用于处理文本文件、提取信息并生成报告。它由Larry Wall在1987年创建,目的是为了弥补当时其他语言如C、sed、awk等在处理文本...
这份"perl的学习笔记1"很可能是作者在深入学习Perl过程中积累的宝贵资料,包括他自己编写的小程序和学习心得。 首先,Perl语言的核心特性是其灵活性和适应性。它的语法混合了C、sed、awk等语言的特点,使得它既适合...
### Perl学习笔记 #### 第1章:Perl简介与基本语法 - **Hello, World!**:Perl中的第一个程序通常是从“Hello, World!”开始的。例如: ```perl #!/usr/bin/perl print "Hello, world!\n"; ``` 或者简化为: ...
Perl语言是一种功能强大的脚本编程语言,尤其适合文本处理和系统管理任务。本文将深入探讨Perl的命令行应用,帮助初学者快速入门。 首先,Perl有很多命令行参数,这些参数可以增强Perl程序的功能和安全性。其中,`-...
这个文档中记录和总结了我学习perl脚本语言的一些经验和初学者需要注意的事情