如何在perl中分配监视变量来打印消息?

 mobiledu2502887867 发布于 2023-01-30 14:39

我的目标是每次将值分配给"受监视"变量时,我想:

    在日志文件中注册该更改或将其显示在状态区域中

    保持代码整洁.

一个真实世界的例子是当光标在文档周​​围移动时,状态栏中的编辑器中的光标位置会发生变化.

我理解,目标1.很容易满足以下片段.

$a = 52;
print LOG "\$a = [$a]\n";

我的偏好是代码看起来像这样:

$a = 52;

在其他地方(一个物体,一个过程,重载的操作员),神奇地发生了打印.

1 个回答
  • 您可以通过将标量变量绑定到处理日志记录的包来完成此操作.绑定允许您定义被调用的子类,以便实际存储,获取等值.

    见perltie和Tie :: Scalar.

    这是一个工作示例:

    #!/usr/bin/perl
    
    use strict;
    use warnings;
    
    package LogScalar;
    use Tie::Scalar;
    our @ISA=qw(Tie::StdScalar);
    
    sub STORE {
            my ($this, $value)=@_;
            print "LOG: Storing $value in $this\n";
            $this->SUPER::STORE($value)
    }
    
    package main;
    
    my $v;
    tie $v, 'LogScalar';
    
    $v=100;
    
    print "v = $v\n";
    

    输出:

    LOG: Storing 100 in LogScalar=SCALAR(0x1ff0890)
    v = 100
    

    2023-01-30 14:42 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有