如何在 Perl 中用子函数重写父类函数?

2024-03-02

我想替换子类中的父函数(Somefunc),所以当我调用 Main 过程时它应该失败。

在 Perl 中可以吗?

Code:

package Test;

use strict;
use warnings;

sub Main()
{
    SomeFunc() or die "Somefunc returned 0";
}

sub SomeFunc()
{
    return 1;
}

package Test2;

use strict;
use warnings;

our @ISA = ("Test");

sub SomeFunc()
{
    return 0;
}

package main;

Test2->Main();

你打电话时Test2->Main(),包名称作为第一个参数传递给被调用的函数。您可以使用参数来寻址正确的函数。

sub Main
{
    my ($class) = @_;
    $class->SomeFunc() or die "Somefunc returned 0";
}

在这个例子中,$class"Test2",所以你会打电话Test2->SomeFunc()。更好的解决方案是使用实例(即bless中的对象Test::new, use $self代替$class)。更好的是使用Moose http://search.cpan.org/dist/Moose/lib/Moose.pm,它解决了 Perl 中面向对象编程的很多问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Perl 中用子函数重写父类函数? 的相关文章

  • 使用继承编写 __repr__ 函数的正确方法

    我正在尝试 OOP python 但我不确定 repr 函数继承 由于父类函数如下所示 def repr self Returns representation of the object return r format Class nam
  • 当父模块中的变量发生更改时,如何访问从另一个模块继承的变量?

    我有一个文件a py avariable None class a def method self global avariable avariable 100 print variable is avariable 和一个文件 b py
  • 如何继承并重写 django 模型类来创建 listOfStringsField?

    我想为 django 模型创建一个新类型的字段 它基本上是一个 ListOfStrings 因此 在您的模型代码中 您将具有以下内容 模型 py from django db import models class ListOfString
  • 如何 grep 遍历数组,同时过滤掉匹配项?

    有没有一种快速简便的方法来 grep 遍历数组 找到满足某些测试的元素and从原始数组中删除这些 例如我想要 a 1 7 6 3 8 4 b grep filter gt 5 a now b 7 6 8 and a 1 3 4 换句话说 我
  • 如何在C++中实现模板类协变?

    是否可以以这样一种方式实现类模板 如果模板参数相关 一个对象可以转换为另一个对象 这是一个展示这个想法的例子 当然它不会编译 struct Base struct Derived Base template
  • 为什么这个特定 Perl 脚本的线程版本比非线程版本慢 200 倍?

    A 推介会 http migo sixbit org papers Perl Threads by 米哈埃尔 戈伊克曼 http migo sixbit org 2003 年 Perl 会议上的文档包含两个质数查找脚本的示例 One htt
  • 如何重写 JQuery 的 .show() 和 .hide() 以触发前后事件?

    我试图重写 JQuery show 和 hide 方法 以在使用以下代码调用它们之前和之后启动触发事件 document ready function dataBox bind afterShow function alert afterS
  • 如何在 Perl 中发送此 SOAP XML?

    我必须发送下面的 XML 我有no idea从哪儿开始 我知道我需要在 Perl 中查找 SOAP 但大致就是这样
  • Perl 中的线程定时循环

    本质上 我希望有一个高优先级线程 它以给定的时间间隔 此处为 0 5 毫秒 运行并中断 一切 执行一个短任务 然后返回 睡眠 状态 使用 Ubuntu 11 04 和 perl v5 10 1 问题是 虽然我得到了某种结果 但我不确定是否有
  • 如何使用 Perl 在 Unix 中获取文件创建时间

    如何使用 perl 在 unix 中获取文件创建时间 我有这个命令显示文件的最后修改时间 perl MPOSIX le print strftime d b Y H M localtime lstat 9 for ARGV file txt
  • 如何让Doxygen忽略继承关系?

    我试图让 Doxygen 在绘制协作图时忽略继承关系 假设我的类定义如下所示 class Derived public Base int x int y int z 现在 当我运行 Doxygen 时 我不想在生成的协作图中看到基类 乍一看
  • 从具有不同活动 perl 版本的另一个 perl 脚本调用 perl 函数

    我们有两个版本的 Active perl 5 6 和 5 24 我们有必须在 Active perl 5 24 版本 采用 TLS 1 2 版本 上执行的 Web 服务 并且需要从 Active perl 5 6 版本调用 我们使用的是wi
  • 在 Perl 中将整个文件读入哈希值

    我在 Perl 中将文件读入哈希时遇到一些问题 Chr1 supercontig 000000000 1 500 PILOT21 588 1 3 14602 59349 1 Chr1 supercontig 000000001 5 100
  • Log4Perl 将多个程序的日志记录捆绑到一个日志中

    CPAN 上是否有任何 Logger 它允许我将多个程序的日志捆绑到一个文件中 并在两个程序同时运行并并行调用 log4Perl 时同步并行日志记录 背景是我使用一个自定义附加程序来写入电子邮件 我想将所有电子邮件捆绑在一个文件中作为备份
  • 零垫重命名,例如图片 (2).jpg -> 图片 (002).jpg

    我需要按照标题在所有子文件夹中解释的方式重命名所有图像 我正在考虑用正则表达式提取括号内的数字 然后重命名它 搜索周围我看到有类似的工具rename and mmv但我无法让他们重新命名 jpg 我将不胜感激任何解决我的问题的建议 顺便说一
  • 缓存施瓦茨变换

    我正在学习 中级 Perl 它非常酷 我刚刚读完 施瓦茨变换 部分 在理解它之后 我开始想知道为什么变换不使用缓存 在具有多个重复值的列表中 转换会重新计算每个值的值 因此我想为什么不使用哈希来缓存结果 这是一些代码 a place to
  • 在 Perl 中查找标量变量的数据类型

    我有一个接受用户输入的函数 输入可以是整数 浮点数或字符串 我有三个重载函数 应该根据输入数据的数据类型调用它们 例如 如果用户输入一个整数 比如100 则应该调用具有整数参数的函数 如果用户输入字符串 例如 100 则应调用具有字符串参数
  • 强制派生类实现接口

    我今天在这里 就像昨天一样 遇到了另一个奇怪的界面问题 我有一堂课 public class InputDevice
  • “get”在 Perl 中不起作用

    我是 Perl 新手 在过去的几天里 我制作了一些简单的脚本 通过 get 将网站的源代码保存到我的计算机上 他们做了他们应该做的事情 但不会获得论坛网站的内容 非论坛网站工作得很好 知道发生了什么事吗 这是问题块 my url http
  • TypeScript 中 C# 类虚拟成员的等效项

    因此 在 C 中 当我创建模型类和延迟加载内容时 我会执行以下操作 public int User ID get set public int Dept ID get set 然后在我的班级稍远一点的地方 我像这样弹出我的虚拟 public

随机推荐

  • Maven 的 Jersey 问题 - Shade 插件

    我的问题非常类似于 仅当依赖项组装到单个 jar 中时才会抛出 Jersey 异常 https stackoverflow com questions 12611213 jersey exception only thrown when d
  • 过滤R中所有列包含相同数据的行

    我有一个数据集 要求每个参与者回答一系列问题 有些人对每个问题都给出了相同的回答 我想丢弃这些参与者的数据 但不知道如何去做 我的意思是我可以尝试过滤 区分 但我遇到的问题是大约有 100 个问题 所以 100 列 我不确定使 R 过滤所有
  • 使用PHP 5.5的password_hash和password_verify函数

    假设我想存储用户的密码 这是否是使用 PHP 5 5 的正确方法password hash 函数 或 PHP 5 3 7 的此版本 https github com ircmaxell password compat https githu
  • 我在 Visual Studio 2010 中找不到从工具菜单生成本地资源

    我在网页的设计视图 标记 中 我在工具菜单中找不到 生成本地资源 谁能告诉我如何启用这个工具 查看 aspx 或 ascx 文件时 确保您正在查看 设计 或 拆分 选项卡 而不是 源 选项卡 此外 这篇文章可能会有所帮助 其中部分指出 如果
  • C# 中的 'volatile' 关键字仍然被破坏吗?

    乔 阿尔巴哈里有一个很棒的系列 http www albahari com threading 关于多线程 这是必读的内容 对于任何从事 C 多线程处理的人来说都应该牢记于心 然而 在第 4 部分中 他提到了 volatile 的问题 请注
  • 获取用户信息 Google-PHP-Client 问题?

    首先 我只想说我需要从用户那里获取哪些信息 全名 名字 姓氏 电子邮件地址 主帐户 而不是 google plus com 位置 国家 州 城市 地址 Youtube 用户名 为了获取所有这些信息 我继续下载 安装位于以下位置的 PHP 客
  • 如何创建静态链接共享库

    在我的硕士论文中 我尝试为 ARM Cortex M3 嵌入式系统采用共享库方法 由于我们的目标板没有 MMU 我认为使用 普通 动态共享库是没有意义的 因为 text 是直接从闪存执行的 而 data 在启动时被复制到 RAM 所以我无法
  • MinGW 调试模式下 Qt 应用程序启动缓慢

    我在 Win 7 上使用 Qt Creator 3 1 1 和 Qt 5 3 如果设置了 2 个套件 VC2013 和 MinGW 4 8 1 我的应用程序可以编译 并且可以与两个编译器一起使用 但是当我以 MinGW gdb 调试模式启动
  • 如何使用 sklearn Pipeline 转换项目?

    我有一个简单的 scikit learnPipeline共两个步骤 aTfIdfVectorizer随后是一个LinearSVC 我已经使用我的数据拟合了管道 都好 现在我想使用我的拟合来转换 而不是预测 一个项目pipeline I tr
  • 为 git log 这样的两个字命令创建别名?

    有时我有两个词的命令 例如git log or apt get install我想添加一个默认参数 例如 大多数时候我想添加 abbrev commit参数给我的git log 以及 y参数为apt get install git log
  • 如何动态地将 标签附加到

    标签的特定位置?

    本质上 我正在尝试实现一个在选择时突出显示某些文本的功能 这仅适用于 Google Chrome 浏览器 例如 选型前 p sample text p 从 示例文本 中选择 文本 后 p sample span class state hi
  • oozie Sqoop 操作无法将数据导入到 hive

    我在执行 oozie sqoop 操作时遇到问题 在日志中我可以看到 sqoop 能够将数据导入到临时目录 然后 sqoop 创建 hive 脚本来导入数据 将临时数据导入配置单元时失败 在日志中我没有收到任何异常 下面是我正在使用的 sq
  • MVC 路由捕获文件名作为参数

    我正在尝试使用 MVC 生成一个简单的 WebDAV 服务器 并且我终于达到了需要向用户提供请求的文件的阶段 我设置了一条用于遍历目录结构的路线 webdav path 工作正常 直到该路径以文件名结束为止 此时 IIS 似乎确定它是静态文
  • 带有 php 和 ssl 的本地主机服务器

    我正在寻找允许使用 ssl 启动 php 文件的服务器 我尝试过例如 python 简单服务器 import BaseHTTPServer SimpleHTTPServer import ssl httpd BaseHTTPServer H
  • 如何在Python中创建随机的圆数组而不重叠?

    我想知道如何在Python中创建一些不重叠的圆圈 Let me share a part of my script 在第 55 56 和 57 行中 我打印了坐标 见证了重叠 在每个 for 语句中 我认为我避免了重叠执行诸如二分法 求根方
  • Git - 如何在 Windows 上使用 .netrc 文件保存用户和密码

    当我使用 Git 通过 HTTP 和用户密码克隆远程存储库时 是否可以在 Windows 上使用 netrc 文件 是否可以使用 netrcWindows 上的文件 是的 您必须 定义环境变量 HOME Git 2 0 之前的版本 Git
  • Windows批处理脚本url解码

    我有一个批处理脚本可以在我的网络上触发 vlc 问题是它根据浏览器中的 URL 打开 浏览器会自动添加 20 来代替常规空格 在将文件路径发送到 vlc 之前 我需要在批处理脚本中再次将其替换为常规空格 这是我的代码 echo off se
  • 如果Python中用户输入为空,如何定义默认值?

    如果用户从键盘输入值 我必须设置默认值 这是用户可以输入值的代码 input int raw input Enter the inputs Here the value will be assigned to a variable inpu
  • 如何在没有 Kerberos 的情况下启动 Spark 3.0.0 kubernetes 工作负载?

    似乎在 Spark 3 0 0 上 当我使用 kubernetes 进行 Spark 提交时 它需要 kerberos 我使用在 2 4 5 中运行良好的相同 Spark 提交 我收到此错误 Using Spark s default lo
  • 如何在 Perl 中用子函数重写父类函数?

    我想替换子类中的父函数 Somefunc 所以当我调用 Main 过程时它应该失败 在 Perl 中可以吗 Code package Test use strict use warnings sub Main SomeFunc or die