当前位置: 首页 > article >正文

HoRain云--Perl OOP编程

HoRain云小助手个人主页 个人专栏: 《Linux 系列教程》《c语言教程》⛺️生活的理想就是为了理想的生活!⛳️ 推荐前些天发现了一个超棒的服务器购买网站性价比超高大内存超划算忍不住分享一下给大家。点击跳转到网站。专栏介绍专栏名称专栏介绍《C语言》本专栏主要撰写C干货内容和编程技巧让大家从底层了解C把更多的知识由抽象到简单通俗易懂。《网络协议》本专栏主要是注重从底层来给大家一步步剖析网络协议的奥秘一起解密网络协议在运行中协议的基本运行机制《docker容器精解篇》全面深入解析 docker 容器从基础到进阶涵盖原理、操作、实践案例助您精通 docker。《linux系列》本专栏主要撰写Linux干货内容从基础到进阶知识由抽象到简单通俗易懂帮你从新手小白到扫地僧。《python 系列》本专栏着重撰写Python相关的干货内容与编程技巧助力大家从底层去认识Python将更多复杂的知识由抽象转化为简单易懂的内容。《试题库》本专栏主要是发布一些考试和练习题库涵盖软考、HCIE、HRCE、CCNA等目录⛳️ 推荐专栏介绍1. 基本概念2. 简单示例定义类Person.pm使用类main.pl3. 继承子类Employee.pm使用继承4. 现代 Perl OOP 模块Moose功能完整Moo轻量级 Moose 兼容5. 关键点总结6. 何时使用示例完整现代 OOPMoo进阶主题Perl 的面向对象编程OOP基于包package和引用reference通过 bless 操作将引用与类关联。以下是核心概念和示例1.基本概念类一个包package包含数据和方法。对象被祝福bless的引用通常是哈希引用。方法类的子程序第一个参数为对象或类名。2.简单示例定义类Person.pmpackage Person; # 类名 use strict; use warnings; # 构造函数 sub new { my ($class, $name, $age) _; my $self { name $name, age $age, }; bless $self, $class; # 将引用与类关联 return $self; } # 实例方法 sub get_name { my $self shift; return $self-{name}; } sub set_name { my ($self, $name) _; $self-{name} $name; } sub get_age { my $self shift; return $self-{age}; } sub set_age { my ($self, $age) _; $self-{age} $age; } sub info { my $self shift; return Name: $self-{name}, Age: $self-{age}; } 1; # 包必须返回真值使用类main.pluse strict; use warnings; use Person; # 加载类 my $person Person-new(Alice, 30); # 创建对象 print $person-info(), \n; # 调用方法 $person-set_age(31); print New age: , $person-get_age(), \n;3.继承通过ISA数组指定父类子类Employee.pmpackage Employee; use strict; use warnings; use base Person; # 继承 Person # 扩展构造函数 sub new { my ($class, $name, $age, $job) _; my $self $class-SUPER::new($name, $age); # 调用父类构造 $self-{job} $job; return $self; } # 新增方法 sub get_job { my $self shift; return $self-{job}; } # 重写方法 sub info { my $self shift; my $info $self-SUPER::info(); # 调用父类方法 return $info, Job: $self-{job}; } 1;使用继承use Employee; my $emp Employee-new(Bob, 25, Engineer); print $emp-info(), \n; # 输出Name: Bob, Age: 25, Job: Engineer4.现代 Perl OOP 模块传统方式较底层推荐使用现代模块Moose功能完整package Person; use Moose; has name (is rw, isa Str); has age (is rw, isa Int); sub info { my $self shift; return $self-name . is . $self-age . years old; } __PACKAGE__-meta-make_immutable; # 优化性能 1;Moo轻量级 Moose 兼容package Person; use Moo; has name (is rw); has age (is rw); sub info { my $self shift; return $self-name . , . $self-age; } 1;5.关键点总结传统方式现代方式推荐手动 bless 哈希引用使用 Moose/Moo 定义属性通过 ISA 实现继承通过 extends 关键字继承访问器需手动编写自动生成访问器is rw无类型检查支持类型约束isa Int6.何时使用小型脚本/遗留代码传统 bless 方式。新项目使用Moo轻量或Moose功能全。性能关键考虑Moo​ 或Class::Accessor。示例完整现代 OOPMoo# File: Person.pm package Person; use Moo; use namespace::clean; has name (is rw, required 1); has age (is rw, default sub { 20 }); sub greet { my $self shift; return Hi, Im . $self-name; } 1; # 使用 use Person; my $p Person-new(name Carol); print $p-greet;进阶主题角色Role类似接口/混入Moose::Role。多继承通过ISA (Class1, Class2)。私有方法约定以_开头非强制。Perl OOP 灵活但需注意代码规范。建议新项目从Moo​ 开始平衡功能和简洁性。❤️❤️❤️本人水平有限如有纰漏欢迎各位大佬评论批评指正如果觉得这篇文对你有帮助的话也请给个点赞、收藏下吧非常感谢! Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧

相关文章:

HoRain云--Perl OOP编程

🎬 HoRain云小助手:个人主页 🔥 个人专栏: 《Linux 系列教程》《c语言教程》 ⛺️生活的理想,就是为了理想的生活! ⛳️ 推荐 前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!…...

GEEKOM A5 Pro迷你主机Ubuntu 25.10性能评测

1. GEEKOM A5 Pro 2026 Edition迷你主机Ubuntu 25.10深度评测作为一名长期关注迷你主机的技术爱好者,最近我有幸体验了GEEKOM A5 Pro 2026 Edition这款搭载AMD Ryzen 5 7530U处理器的迷你主机。在前两篇评测中,我们已经对其硬件设计和Windows 11 Pro下的…...

douyin-downloader终极指南:5分钟学会抖音无水印批量下载

douyin-downloader终极指南:5分钟学会抖音无水印批量下载 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback su…...

算法训练营第 16天 541. 反转字符串II

刷题日期:2026 年 4 月 28日题目 541. 反转字符串II 题目链接 :https://leetcode.cn/problems/reverse-string-ii/ 官方题解:https://www.bilibili.com/video/BV1dT411j7NN 一、看到题目的第一想法 可以写一个通用的区间反转函数&#xf…...

JAX向量化超简单

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 JAX向量化:解锁高效计算的极简之道目录JAX向量化:解锁高效计算的极简之道 引言:为什么向量化…...

【微电网调度】考虑需求响应的改进的多目标灰狼算法微电网优化调度研究【含Matlab源码 15393期】

💥💥💥💥💥💥💥💥💞💞💞💞💞💞💞💞💞Matlab领域博客之家💞&…...

GetQzonehistory:3步永久保存QQ空间青春记忆的Python终极方案

GetQzonehistory:3步永久保存QQ空间青春记忆的Python终极方案 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否担心QQ空间里那些珍贵的青春记忆会随着时间流逝而消失&a…...

Unity Shader 半透明物体为什么不能写入深度缓冲?

从 Depth Buffer 原理到 URP Shader 实战,彻底搞懂半透明渲染的每一个环节Chapter 01半透明物体为什么不能写入深度缓冲?要理解这个问题,我们需要先回到 Depth Buffer(深度缓冲,也叫 Z-Buffer)的基本工作原…...

URP 与 Built-in 渲染管线SubShader Pass 执行机制全解

01渲染管线总览:Built-in vs URP/HDRPUnity 渲染管线历史上经历了两个重要时代。早期的 Built-in Render Pipeline(内置管线,也称 Legacy Pipeline)是随 Unity 3/4/5 时代共同成长的"老一代"渲染架构,功能齐…...

程序员接单工具搭配方案:月入5000到20000,我见过最实在的一套打法

程序员接单工具搭配方案:月入5000到20000,我见过最实在的一套打法 大家好,我是帅哥威,一个即将拥有九块腹肌的程序员。 先泼盆冷水。 网上那些"程序员接单月入五万"的帖子,80%是卖课的。 真正从接单子里一个…...

ERROR: invalid input syntax for type integer: “a“

文章目录环境症状问题原因解决方案环境 系统平台:银河麒麟 (鲲鹏) 版本:4.5 症状 执行下面SQL语句时,报 “无效的类型 integer 输入语法” 的错误,详细如下: db_test# select * from t1 whe…...

安全版V4.5版本docker容器license过期问题处理步骤

文章目录环境症状问题原因解决方案环境 系统平台:Linux x86-64 Red Hat Enterprise Linux 7 版本:4.5.10 症状 数据库容器无法启动,无明显错误提示,通过docker logs 容器名 无法确认明确的报错信息 [rootsecurity home]# dock…...

C++LeetCode数据结构基础详解

一、只出现一次的数字遍历一遍数组利用异或的特性来实现(相同为0,相异为1 )例如[4,1,2,1,2] 4和1异或为5 5和2异或为7 7和1异或为6 6和2异或为4 这样就能找出唯一的数字了1234567public int singleNumber(int[] nums) {int res0;for(int i0;i…...

Inter字体是什么?掌握这款现代无衬线字体,彻底解决屏幕阅读难题

Inter字体是什么?掌握这款现代无衬线字体,彻底解决屏幕阅读难题 【免费下载链接】inter The Inter font family 项目地址: https://gitcode.com/gh_mirrors/in/inter 你是否曾在浏览网页时觉得文字模糊不清?或者在设计界面时为字体在不…...

成年人最廉价的错觉:靠“好说话”换取尊重

上周三晚上快十一点,我在航天桥附近的一个烤串店,碰见了以前团队里的小林。 小林是个性格特温和的架构师,平时在组里出了名的“好说话”。那天他坐在角落里,面前摆着几瓶空啤酒,眼圈通红。 我坐过去陪他喝了两杯。他…...

告别虚拟机!实测WSL2下Ubuntu 18.04编译GAMIT 10.71完整流程(附避坑清单)

WSL2环境下高效编译GAMIT 10.71的完整实践指南 在GNSS数据处理领域,GAMIT作为经典的高精度解算软件,其安装配置一直是初学者的第一道门槛。传统虚拟机方案虽然可行,但存在资源占用高、系统隔离强、操作繁琐等痛点。本文将带你体验WSL2这一轻…...

ENVI5.3处理GF2数据时,FLAASH大气校正参数怎么设?手把手教你根据经纬度和日期选对模型

ENVI5.3处理GF2数据时FLAASH大气校正参数设置实战指南 当你在清晨打开ENVI软件,准备处理一批高分二号(GF2)卫星影像时,是否曾被FLAASH大气校正中那些令人眼花缭乱的参数选项所困扰?作为一名长期从事遥感影像处理的专业…...

C语言中常用的几个头文件及库函数

不完全统计&#xff0c;C语言标准库中的头文件有15个之多&#xff0c;所以我主要介绍常用的这四个头文件stdio.h,string.h,math.h,stdlib.h&#xff0c;以后用到其他的再做补充。下面上干货&#xff1a;1.<stdio.h>&#xff1a;定义了输入输出函数、类型以及宏&#xff0…...

【限时公开】某头部云厂商内部 Dev Containers 标准化模板(含预编译缓存、多阶段构建加速、离线依赖镜像包),仅开放72小时下载权限

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;VS Code 远程容器开发环境 (Dev Containers) 优化 报错解决方法 常见启动失败原因与诊断流程 Dev Containers 启动失败常源于 Docker 权限、.devcontainer.json 配置错误或基础镜像缺失。建议首先运行…...

告别盲调!手把手教你用U-Boot fdt命令动态查看与验证设备树节点

告别盲调&#xff01;手把手教你用U-Boot fdt命令动态查看与验证设备树节点 在嵌入式开发中&#xff0c;设备树&#xff08;Device Tree&#xff09;作为硬件描述的标准方式&#xff0c;已经成为Linux内核不可或缺的一部分。然而&#xff0c;当我们在开发或调试设备驱动时&…...

DLSS Swapper:游戏DLSS版本管理与性能优化全攻略

DLSS Swapper&#xff1a;游戏DLSS版本管理与性能优化全攻略 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 对于追求极致游戏体验的PC玩家来说&#xff0c;DLSS&#xff08;深度学习超级采样&#xff09;技术已成为现…...

C++示例讲解观察者设计模式

引言用来解决两个不相关对象之间的一对一或者一对多的通信模型。什么是观察者设计模式观察者模式是一种对象行为模式。它定义对象间的一种一对多的依赖关系&#xff0c; 当一个对象的状态发生改变时&#xff0c;所有依赖于它的对象都得到通知并被自动更新。在观察者模式中&…...

3步掌握微生物网络分析:microeco包快速构建生态关联网络指南

3步掌握微生物网络分析&#xff1a;microeco包快速构建生态关联网络指南 【免费下载链接】microeco An R package for downstream data analysis of microbiome omics data 项目地址: https://gitcode.com/gh_mirrors/mi/microeco 微生物群落中物种间的复杂相互作用关系…...

ThinkPad风扇控制神器:TPFanCtrl2让你的笔记本告别“直升机模式“[特殊字符]

ThinkPad风扇控制神器&#xff1a;TPFanCtrl2让你的笔记本告别"直升机模式"&#x1f680; 【免费下载链接】TPFanCtrl2 ThinkPad Fan Control 2 (Dual Fan) for Windows 10 and 11 项目地址: https://gitcode.com/gh_mirrors/tp/TPFanCtrl2 你是否曾经被Think…...

5款降AI神器综合性价比盘点:速度+效果+售后哪款最值毕业生选?

降 AI 神器这个词被用得太泛&#xff0c;导致很多工具都自称神器但综合性价比一塌糊涂。 这次盘点用一个简单的标准——速度 效果 售后这三维度都不弱的才能上榜。综合性价比最高的三款是嘎嘎降AI&#xff08;www.aigcleaner.com&#xff09;、比话降AI&#xff08;www.bihu…...

到底什么资格,才算真正的资深 Java 开发专家

目录 前言 一、破除认知误区&#xff1a;绝大多数 Java 开发者&#xff0c;达不到资深专家门槛 1.1 初级 / 中级 / 高级 / 资深专家 核心能力差异 1.2 伪「资深 Java」典型特征 二、核心资质一&#xff1a;夯实底层根基&#xff0c;吃透 Java 基础与 JVM 底层原理 2.1 高…...

3分钟解决Axure RP界面难题:一键切换中文版的高效方案

3分钟解决Axure RP界面难题&#xff1a;一键切换中文版的高效方案 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure R…...

天音控股披露最新财报:拥抱AI融合趋势 数智化转型赋能新零售

近日&#xff0c;天音控股&#xff08;000829.SZ&#xff09;发布2025年年报以及2026年一季报&#xff0c;2025年公司实现营业总收入905.7亿元&#xff0c;同比上升7.77%&#xff0c;2026年一季度公司实现营业收入292.16亿元&#xff0c;同比30.41%。整体经营基本面保持稳健。2…...

为什么92%的Laravel项目在集成AI后6个月内遭遇Token泄露或Prompt注入?——基于OWASP Top 10 for AI的5步加固协议

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Laravel 12 AI集成安全危机的根源剖析 Laravel 12 引入了原生 AI 辅助能力&#xff08;如 Illuminate\AI 命名空间&#xff09;&#xff0c;支持无缝对接 OpenAI、Anthropic 及本地 LLM。然而&#xf…...

Django怎么实现数据可视化接口_Python利用Pandas处理模型数据

最快方式是 pd.DataFrame(list(Model.objects.all().values()))&#xff0c;但大表易OOM&#xff1b;小数据用分页或 django-pandas.read_frame()&#xff1b;可视化需 df.to_dict(orientrecords) JsonResponse&#xff0c;时间字段要 strftime&#xff0c;空值转 None。怎么把…...