从超类访问 __DATA__

2024-01-08

我有一个名为 Response 的超类:

package Response;

use strict;
use warnings;

use HTML::Template;

sub response {
    my ( $class, $request ) = @_;
    return $request->new_response( $class->status, $class->headers, $class->body );
}

sub body {
    my $class = shift;
    my $template = HTML::Template->new( 'filehandle' => eval("$class::DATA") );
    return $template->output() . $class;
}

sub status {
    return 200;
}

sub headers {
    return [ 'Content-Type' => 'text/html' ];
}

1;

__DATA__
Default content

和一个名为 URIError 的子类:

package URIError;

use strict;
use warnings;

use Response;
our @ISA = qw(Response);

1;

__DATA__
Invalid URI

当调用 URIError->response 时,行

my $template = HTML::Template->new( 'filehandle' => eval("$class::DATA") );

在 Response 类中不采用DATAURIError 类中的部分内容。

实现此目的的语法是什么?


如果您更改,您的代码将起作用body像这样的方法。没有必要eval: 你所要做的就是禁用strict 'refs'并取消引用该字符串"${class}::DATA"

sub body {
   my $class = shift;

   my $data_fh = do {
      no strict 'refs';
      *{"${class}::DATA"};
   };

   my $template = HTML::Template->new( filehandle => $data_fh );

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

从超类访问 __DATA__ 的相关文章

  • 如何使用 Perl 在 Unix 中获取文件创建时间

    如何使用 perl 在 unix 中获取文件创建时间 我有这个命令显示文件的最后修改时间 perl MPOSIX le print strftime d b Y H M localtime lstat 9 for ARGV file txt
  • 在 Perl 中确定范围重叠的最快方法

    我有两组范围 每个范围都是一对整数 开始和结束 表示单个较大范围的某些子范围 两组范围的结构与此类似 当然 将替换为实际数字 a ranges a 1 gt start gt end gt a 2 gt start gt end gt a
  • 如何在 Perl 中将多个哈希值合并为一个哈希值?

    在 Perl 中 我如何得到这个 VAR1 999 gt 998 gt 908 906 0 998 907 VAR1 999 gt 991 gt 913 920 918 998 916 919 917 915 912 914 VAR1 99
  • 使用 ActivePerl 时为什么必须指定带有备份扩展的 -i 开关?

    除非我使用备份扩展指定它们 否则我无法就地编辑在 ActivePerl 下运行的 Perl 单行代码 C gt perl i ape splice F 2 0 q inserted text qq F n file1 txt Can t d
  • 如何在 Perl 中的不同包之间共享全局值?

    是否有一种标准方法可以对模块进行编码以保存要包含在每个其他包中的全局应用程序参数 例如 use Config 一个简单的包 只包含our变量 只读变量怎么样 已经有一个标准配置模块 http perldoc perl org Config
  • 单台机器最快的 Perl IPC/消息队列是多少?

    我正在开发一个 主要 Perl 项目 并希望使用消息队列来相互隔离进程 我有这样的工作流程 输入 gt 接收器 gt 处理器 gt 输出 我需要每秒处理数百笔交易 所以速度是我最大的动力 对于这种类型的设置来说 最快的消息队列系统是什么 我
  • 使用 unix ksh shell 脚本或 perl 脚本监视文件夹中的新文件并触发 perl 脚本

    我已经在谷歌搜索和溢出了一段时间 但找不到任何可用的东西 我需要一个脚本来监视公共文件夹并在创建新文件时触发 然后将文件移动到私有位置 我有一个 samba 共享文件夹 exam ple 在 UNIX 上映射到X 在窗户上 在某些操作中 t
  • Mason 方法范围 - 覆盖

    Using Mason2 https metacpan org pod Mason 有 3 个组件 Base mc tmp Base mc tmp index mc The tmp index mc内容 hello from the Som
  • Perl 中的“@_”有什么作用?

    我浏览了一些我在 Perl 类中编写的代码 我注意到了这一点 my string my stringarray split string 我想知道两件事 变量位于括号中的第一行 这是声明多个变量时所做的事情 如果我删除它们 它仍然可以正常工
  • perlbrew 可以在 Windows 上运行吗?

    使用 ActiveState 5 8 8Windows XP http en wikipedia org wiki Windows XP 我想安装更新的 Perl 进行测试 迁移 有一天 我们将不再以为自己只能使用一台计算机 当我想测试这类
  • 从 Perl 线程生成 Expect

    我正在编写一个脚本 该脚本需要定期 每 5 分钟 生成一个 Expect 进程来完成一些工作 下面是我的代码 它生成一个 Expect 进程并执行一些工作 脚本的主要进程始终在做一些其他工作 例如它可能等待用户输入 因为我在一个线程中调用这
  • 标量值错误(使用 IO::Socket)

    这是我当前的代码 usr bin perl w use strict require IO Socket while lt gt chomp my host my header print Connecting to host n my s
  • 真实设备中的 Android strace

    我有以下情况 我想监控Android手机上的系统调用 所以 我编写了一个脚本来做到这一点 使用 Android 模拟器可以完美地工作 将应用程序的痕迹写入我的 Ubuntu 上的特定文件中 问题是当我连接一个真实的手机来分析它时 它在结果文
  • Perl - 以相反的顺序逐行读取文件[重复]

    这个问题在这里已经有答案了 可能的重复 如何在 Perl 中从文件末尾读取行 https stackoverflow com questions 303053 how can i read lines from the end of fil
  • 如何检测已更改的网页?

    在我的应用程序中 我使用 LWP 定期获取网页 无论如何 是否要检查两次连续提取之间网页是否在某些方面发生了变化 除了明确进行比较之外 是否有在较低协议层生成的任何签名 例如 CRC 可以提取并与旧签名进行比较以查看可能的更改 有两种可能的
  • Perl 删除目录中的所有文件

    我怎样才能删除allPerl 中目录中的文件 不删除目录 我的主机只允许最多 250 000 个 文件 而我的 tmp 文件夹会在所有会话 cookie 运行的情况下快速填充 250 000 个 qouta 在这种情况下我无法删除 tmp
  • 这可以一行完成吗?

    我像这样提取MAC地址 my tmp split domain 123 123 123 123 at 00 11 22 33 44 55 ether on eth0 my vip tmp 3 但不使用临时变量可以完成吗 是的 它可以 my
  • 在压缩存档内的文本文件上运行“head”,而不解压存档

    问候 我接手了之前的团队并编写了处理 csv 文件的 ETL 作业 我在 ubuntu 上结合使用 shell 脚本和 perl csv 文件很大 它们以压缩档案形式到达 解压后 很多都超过 30Gb 是的 那是 G 旧进程是在 cron
  • unix df 上的正则表达式帮助

    我需要一些帮助来调整我的代码以查找此 UNIX 中的另一个属性df output Ex Filesystem Size Used Avail Capacity Mounted on dev ad4s1e 61G 46G 9 7G 83 ho
  • 为什么我只得到第一个捕获组?

    https stackoverflow com a 2304626 6607497 https stackoverflow com a 2304626 6607497 and https stackoverflow com a 370042

随机推荐

  • 如何查询 Google BigQuery 表并根据列的子集删除重复项?

    我有一个查询连接两个 google 表并生成一个包含 6 列的表 a b c d e f 接下来 我将该表移至 google 存储桶 然后将该 google 存储桶下载到一堆 CSV 最后我将这些 CSv 插入到postgres数据库表有2
  • 如何判断用户是否点击了浏览器后退按钮或刷新按钮

    我需要确定用户是否单击浏览器后退按钮或刷新按钮 当他单击后退或刷新按钮时 我需要将页面重定向到错误页面 这个怎么做 我需要在 ASP net 页面的 javascript 中执行此操作 首先 如果用户使用 后退 或出于某种原因必须刷新页面
  • 如何使用Spring正确关闭执行器服务?

    我有一个命令行应用程序 它使用由 java 组成的 Spring 管理的 beanExecutorService创建于 ExecutorService service Executors newFixedThreadPool 4 现在 我希
  • ObjectAnimator导致ImageView消失

    我正在制作动画ImageView在 Android API 19 中 使用ObjectAnimator 我一切正常 在 Galaxy S3 上显示完美 但在我的 Nexus 7 2013 WiFi 型号 上却出现问题 目标是使用以下命令让图
  • “git push --mirror”足以备份我的存储库吗?

    我是一名独立开发人员 在本地 Git 存储库中工作 对于备份 我想将该存储库的精确副本发送到另一台服务器 这样做就足够了吗 git push mirror 我这么问是因为有时我可以在 Git 告诉我 一切都是最新的 之前运行这个命令两到三次
  • 通用列表到 CSV 字符串

    我有一个列表想要写入 CSV 字符串 我发现的例子似乎都是针对单个项目列表 我的有多个项目 我目前拥有的代码是 private static string CreateCSVTextFile
  • SqlDataReader:在这种情况下,读取器会被关闭吗?

    我正在清理我继承的旧 NET 1 1 项目中的 DataReader 以前的开发人员以大多数 DAL 方法返回 SqlDataReaders 的方式对数据访问层进行编码 因此由调用者正确调用 Close 或 Dispose 方法 不过 我遇
  • 无法启动环境。要重试,请刷新浏览器或通过选择操作、重新启动 AWS CloudShell 来重新启动

    我无法使用 aws cloud shell 我在受支持的区域 爱尔兰 运营 并且我的用户拥有正确的权限 AWS CloudShell FullAccess Version 2012 10 17 Statement Action clouds
  • 如何清除 Laravel 中的缓存?

    我在 master blade php 中添加了 css 文件 如下所示 在视图中 css 文件的路径如下所示 现在我正在更改 app css 文件中的 css 但它没有反映在网页上 问题是由于 css 文件路径中的 id 造成的 我该如何
  • 在 iOS 中获取设备位置(仅限国家/地区)

    我需要获取 iOS 设备的国家 地区位置 我一直在尝试将 CoreLocation 与 MKReverseGeocoder 一起使用 然而 这似乎经常返回错误 而且我只需要乡村 不需要街道之类的 如何才能以更稳定的方式做到这一点 NSStr
  • Python numpy 中的无循环卡方网格搜索

    最佳拟合线性参数 A 和 B y Ax b 对应于这些参数的卡方函数的最小值 我想对全局卡方最小值进行强力网格搜索 有保证 因为 2 参数线性卡方是抛物面 并通过 3 个嵌套循环 如下 实现了它 但希望避免循环 即向量化使用 Numpy 的
  • 如何使用 Azure Active Directory .NET SDK 删除 AppRoleAssignment?

    我正在尝试找出如何删除AppRoleAssignment来自使用 Azure Active Directory 图形 API 的组或用户 我正在使用 NET SDK Microsoft Azure ActiveDirectory Graph
  • 声明与类型不兼容

    头文件 ifndef H bankAccount define H bankAccount class bankAccount public string getAcctOwnersName const int getAcctNum con
  • AVCaptureSession 旋转 |视频传输时的方向

    我正在开发视频流应用程序 其中我需要捕获前置摄像头视频帧并编码然后传输到另一端 典型的流程是这样的 AVCaptureSession gt AVCaptureDeviceInput gt AVCaptureVideoDataOutput g
  • 如何取消或处置 WebBrowser 元素的当前导航

    我正在开发一个 C NET Framework 4 0 应用程序 它按顺序访问一些页面 有时我必须移至下一页而不等待上一页完成工作 如何取消之前的导航过程WebBrowser元素 WebBrowser元素使用 Internet Explor
  • 模拟器设备框架未显示

    我第一次在 MacBook 上安装 Android Studio 我按如下方式安装了第一个模拟器 但是当我打开设备时 我看不到设备框架 我需要做什么才能看到设备周围的框架 我使用的是 M2 MacBook 创建模拟器 没有设备框架的模拟器
  • 初始化使指针来自整数而不进行强制转换 - C

    很抱歉 如果这篇文章显得无知 但我对 C 还很陌生 所以我对它没有很好的理解 现在我正在尝试找出指针 我编写了这段代码来测试是否可以更改更改函数中 b 的值 并通过传入指针将其带回主函数 不返回 但是 我收到一条错误消息 Initializ
  • Docker 挂载发生在入口点执行之前或之后

    我正在构建一个 Docker 映像来运行基于 Spring Boot 的应用程序 我希望用户能够通过将包含 application properties 的文件夹安装到容器中来提供运行时属性文件 这是我的 Dockerfile FROM j
  • Mysql:重复键更新所有值?

    有没有简单的方法可以更新重复键后的所有值 例如 INSERT INTO published books SELECT FROM books WHERE book id book id ON DUPLICATE KEY UPDATE ever
  • 从超类访问 __DATA__

    我有一个名为 Response 的超类 package Response use strict use warnings use HTML Template sub response my class request return requ