Perl Symbolic Reference

Perl 腾讯股票信息收集 之前的新浪股票脚本信息不太全,参考前面一篇文章腾讯股票接口,写了一个更加方便的,信息比较全的。看代码: use utf8; use Encode; use strict; use warnings; use LWP::UserAgent; use threads (exit => 'threads_only',); use threads::shared; use constant UR 阅读详情
看一些模块的代码,很多时候通过*glob的方式来改变变量或者函数,这种方法称为Symbolic reference。

首先看一下*glob的结构,这个在之前的博文已经讲过,不做细述:

SV = PVGV(0x18d1364) at 0x182aaec
  REFCNT = 2
  FLAGS = (IN_PAD)
  NAME = "test"
  NAMELEN = 4
  GvSTASH = 0x298fc4	"main"
  GP = 0x18b90ac
    SV = 0x0
    REFCNT = 1
    IO = 0x0
    FORM = 0x0  
    AV = 0x0
    HV = 0x0
    CV = 0x0
    CVGEN = 0x0
    LINE = 4
    FILE = "test.pl"
    FLAGS = 0x8
    EGV = 0x182aaec	"test"
运行下边的代码段,察看一下输出对应的ref slot。

print ref \1;
print ref \'testing';
print ref [qw(one, two ,three)];
print ref {};
print ref sub {};
如何给*glob赋值?通过下面的方式,填充Symbol的不同slot,从而使得对应的$test,@test,%test,&test非空。

use Data::Dumper;
use Devel::Peek;

*test = \1;
*test = [qw(one two three)];
*test = {qw(one two three four)};
*test = sub {};

print Dump *test;

$scalar = 1;
*test   = \$scalar;
@array  = 1..4;
*test   = \@array;
%hash   = 1..4;
*test   = \%hash;

print Dump *test;
SV = PVGV(0x18d134c) at 0x182aaec
  REFCNT = 6
  FLAGS = (MULTI,ASSUMECV,IN_PAD)
  NAME = "test"
  NAMELEN = 4
  GvSTASH = 0x298fc4	"main"
  GP = 0x18b9104
    SV = 0x182aadc
    REFCNT = 1
    IO = 0x0
    FORM = 0x0  
    AV = 0x2990d4
    HV = 0x299214
    CV = 0x18b1e7c
    CVGEN = 0x0
    LINE = 4
    FILE = "test.pl"
    FLAGS = 0xe
    EGV = 0x182aaec	"test"
如何使用?use strict情况下有几种方式:
下面的情况直接调用Symbol或者通过our定义直接访问变量,函数无需our定义,总是一个Symbol,可以直接通过名字访问。
use strict;
use Data::Dumper;
use Devel::Peek;

*test = \1;
*test = [qw(one two three)];
*test = {qw(one two three four)};
*test = sub {print "testing\n";};

print $::test;
print %::test;
&test();

our ($test, %test);
print $test;
print %test;
&test;
如果通过一个变量传名字访问另外一个变量,则需要通过下面的方式no strict 'refs'。
no strict 'refs';
print ${'test'};
print %{'test'};
&{'test'};

参考:

perldoc perlref

Perl 新浪股票信息收集 通过解析SINA HTTP 返回的数据获取股票信息,具体返回值参考文章实时股票数据接口大全。 使用说明: perl script.pl [-c -f] -d 获取默认@defaultstock列表中股票信息,参数-c 清屏,参数-f 输出更加完整的信息,参考图例 perl script.pl -m [sh sz zx cy] 四个参数分别代表获取上海,深圳,中小,创业板股票的信息 阅读详情

相关推荐

Perl 判断一个字符串中所有字符是否在另外一个字符串中出现

在酷壳 – CoolShell.cn 中看到一个文章,判断一个字符串中的所有字符是否在另外一个字符串中出现,如果用循环的话时间复杂度是O(mxn),如果使用先排序后判断时间复杂度是O(mlgm)+O(nlgn)+O(m),作者面试的时候考官给出的一个思路是每个字符给一个素数,所有的树相乘,再用这个数去除另外一个字串中字符对应的数,余数为0的话则包含在第一个字串中,时间复杂度为O(m+n),思考了以

USTBHacker的专栏 5062

 pycharm 启动报错:Caused by: java.lang.IllegalAccessException: symbolic reference class is not accessibl

pycharm 启动报错 Internal error. Please refer to http://jb.gg/ide/critical-startup-errors java.util.concurrent.CompletionException: java.lang.IllegalStateException: An unexpected core classloader: cla...

shunzi2016的博客 3706

django drf 框架知识点(一)——serializer序列化器_用法全解

【django drf】序列化器:别名设置,全部参数序列化,自定义字段,只读只写,部分更新

qq_59344127的博客 1338

java接口中表示错误的,为什么包含一个方法的类调用缺少的接口在未使用的代码中会导致Java类加载错误?...

我看到一些似乎与JVM规范不一致的类加载行为,我想知道这是否是一个错误.或者如果没有,希望有人可以解释为什么.下面的示例代码简单地从其main方法打印出hello.它有一个未使用的方法,它包含一个方法调用方法,该方法声明它将一个“C”(这是一个接口)作为参数.当执行main(在类路径中没有A,B和C)时,将为C接口引发ClassNotFound错误.(注意C在运行时从来不是实际需要的,因为它仅在一...

weixin_42514783的博客 268

Honeywell EPKS 核心功能块组态与执行调度实战解析

本文深入解析Honeywell EPKS系统的核心功能块组态与执行调度技术,涵盖控制模块(CM)、顺序控制模块(SCM)和输入输出模块(IOM)的配置方法。通过实战案例分享执行顺序(ORDERINCM)和CEE执行周期的优化策略,帮助工程师提升工业自动化系统的控制精度和运行效率。

weixin_28724319的博客 414

Sentaurus TCAD学习——Scheme编程语言

sentaurus scheme语言学习记录

摸摸小熊猫的博客 964

JVM 符号引用(Symbolic References)

符号引用 什么是符号引用?在说符号引用之前我们先来看看直接引用,直接引用是什么,比如就是你拥有你所需要数据的地址值,可以直接根据地址值获取到数据。但是 java语言是解释性的语言,然后由于总总原因(我也不知道对不对的原因)在某些时刻有些东西的直接地址还并不存在,是无法使用直接引用。这时候就可以用到符号引用了。 符号引用:符号引用是一个字符串,它给出了被引用的内容的名字并且可能会包含一些其他关于...

LZ的博客 8680

[Github]GitHub 2FA快速安全配置全攻略

GitHub强制要求用户启用双重身份验证(2FA)以提升代码安全。本文详细介绍了2FA的三种实现方式:TOTP应用验证(推荐)、SMS短信验证(备用)和硬件安全密钥(最安全),并提供了配置指南。特别推荐使用在线工具2FA.run快速测试TOTP功能。文章还涵盖恢复代码管理、企业级2FA策略制定以及常见问题解决方案,如时间同步问题、多设备同步等。通过强制2FA、定期审计和建立安全事件响应流程,开发者可构建更安全的代码管理体系。

冰茶的博客 2618

使用Maven编译Scala时报:bad symbolic reference. A signature in package.class refers to type compileTimeOnly

在使用maven编译scala的时候,报错:    Error:scalac: bad symbolic reference. A signature in package.class refers to type compileTimeOnly    in package scala.annotation which is not available.    It may be complete...

一杯咖啡。的博客 2732

Windows下Nginx发布DEM地形瓦片数据全流程(含Cesium调用避坑指南)

本文详细介绍了在Windows环境下使用Nginx发布DEM地形瓦片数据的完整流程,并提供了Cesium前端调用的详细配置与避坑指南。重点讲解了Nginx的核心配置、跨域问题解决以及CesiumTerrainProvider的关键参数设置,帮助开发者快速搭建本地地形服务,实现高效的三维地形可视化。

weixin_29212867的博客 434

Android HWC硬件合成器实战:从SurfaceFlinger到显示驱动的完整流程解析

本文深入解析Android HWC硬件合成器从SurfaceFlinger到显示驱动的完整流程,揭示HWC如何优化图形性能并降低功耗。通过实战案例和调试技巧,帮助开发者掌握硬件加速的图层混合技术,提升移动设备的显示效率。

gaochao的博客 494

关于perl的ref 函数

<br />我们都知道perl有引用的概念:一组数据实际上是另一组数据的引用。这些引用称为指针,第一组数据中存放的是第二组数据的头地址。引用的方式被用得相当普遍,特别是在面向对象的模块、函数的参数传递等常见。但perl对每个引用都是以一个普通的变量来定义的,有时候,如果数据的架构比较复杂,我们可能会困惑于某个变量所指向的地址的实际内容是什么?perl的ref函数就可以帮助我们。<br /><br />一、说明<br />从perl自带的帮助说明可以了解相关的用法:引用$ perldoc -tf ref<br

2859

保姆级教学:从0搭建微信小程序SpringBoot+Vue(一)

目标:实现一个微信小程序从后端数据库MySQL获取的商品展示页。 框架:后端采用SpringBoot,前端采用Vue,数据库MySQL。 部署工具:IntelliJ IDEA 2024.2专业版+HbuilderX+Node+微信开发者工具,jdk1.8已安装

weixin_44545610的博客 4925

Linux | Bash Shebang 语法与结构及常见问题排查

……

u013669912的博客 1161

备战2025数学建模国赛(算法65):Fisher判别分析

在数学建模竞赛中,我们常常会遇到需要对研究对象进行分类或判断的问题。例如,根据西瓜的各类指标判断其好坏,根据经济数据判断一个国家的发展程度,或根据病人的医学影像特征判断其是否患病。这类“分类判别”问题,是建模竞赛中最常见的题型之一。Fisher判别分析(或称线性判别分析,LDA)作为一种经典的、有监督的降维与分类方法,因其模型简洁、可解释性强、计算高效而备受青睐。

YOLO 422

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

工作中使用到的单词(软件开发)

1.エイリアス   alias 别名 powershell使用 get-help 命令时,会得到与此命令 相关(别名)的命令 2.プロキシ proxy 代 理 3.プロモート   promote 促进,提升   开发的系统新功能上线发布,有时会使用到这个词,比如 STプロモート 还有使用リリース这个词的。比如STリリース。个人认为两者含义相同。 4.見逃し み................................................................

sun0322 6万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

perl常见问题集(一)

我如何作 (任何事)? 你到 CPAN(见 perlfa)找过了吗?也许别人已经写了某个模组可以解决你的 问题。你查过相关的说明文件了吗 (man pages)?以下是一份概要的索引: 物件 (Objects) perlref, perlmod, perlobj, perltie 资料结构 (Data Structures) perlref, perllol, perldsc 模组 (Module

技术资料库 3841

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

腾迅股票数据接口 http/javascript

之前使用了新浪的股票数据,由于新浪http/javascript缺少一些数据,用chrome自带的开发工具监视腾迅财经HTTP信息,得到以下获取股票数据的方法。 以五粮液为例,要获取最新行情,访问数据接口: http://qt.gtimg.cn/q=sz000858 返回数据: v_sz000858="51~五 粮 液~000858~27.78~27.60~27.70~41

USTBHacker的专栏 11万+

Perl lib path

Perl 中默认LIB路径有如下几个地方可以存储: Perl -V 中@INC变量,这是编译时绑定的系统环境变量PERL5LIB,如set PERL5LIB=D:/tmp 脚本中use lib 添加 所有的操作最后都是在系统变量@INC 中添加一个路径,按照先后顺序依次查找,默认的先后顺序是上边三类的倒序排列,看如下示例。 没有添加额外的路径的情况:(默认当前目录会添加到LIB

USTBHacker的专栏 6119

Perl threads 摘要

最近又写了一个多线程的小工具,对一些多线程的使用有了进一步的心得。 Perl 创建线程有两种方式,正常通过threads->create 创建线程,用async  创建一个调用匿名过程的线程,具体参考perldoc threads。线程共享变量需要使用 threads::shared,共享变量只能存储scalar,共享变量的引用,如果存储List Hash的引用需使用shared_clo

USTBHacker的专栏 4647

Perl 最简单配置文件

脚本中经常需要用到配置文件,一般来说可以用INI, XML来编辑配置文件,缺点是需要按照特定的格式配以特定的解析方法,需要额外引入其他的模块或者方法。用脚本语言Perl/Python来实现的话,最简单的方法就是用另外一个脚本来存储变量,使用的时候直接引入即可。优点是不需要额外的解析方法,而且配置灵活,可以用语言本身支持的数据结构来表示各种复杂的配置。 示例: config.pl %c

USTBHacker的专栏 3299

Perl read INI file

工作中需要处理INI 配置文件,看了下同事写的脚本,处理的比较简单,只解析了需要的那部分,没有对其他部分做出处理,自己重新写了一个,可以把整个文件一次处理完毕,很简单,代码如下:   use warnings; use Data::Dumper; my $f = 'd:/project/SDI/params.config'; my (%dict,$this); open FIL

USTBHacker的专栏 2845

Perl Class::Struct

如果用perl来实现C的数据结构struct,请使用模块Class::Struct. 以下为一简单示例: -------------------------------------------------------------------- use Data::Dumper; use Class::Struct; use IO::File; struct Test =>{

USTBHacker的专栏 2824

Perl 前缀树实现

前缀树,用来处理大量字符串的查找、排序,也称为字典树,可以代替hash table。 http://en.wikipedia.org/wiki/Trie 以下翻译自Wikipedia: The following are the main advantages of tries over binary search trees (BSTs): Looking up keys

USTBHacker的专栏 2773

Perl threads join 返回值

写一个多线程脚本过程中遇到一个奇怪的问题,线程的返回值总为空,仔细探究了一下,终于搞明白了原因。 Perl 多线程创建过程中可以显示或者隐式的指定context,可以理解为返回值内容,如果没有显示指定则会根据脚本写法来推测返回值。看下边脚本的例子: use threads; # return scalar sub test{ return "this is testing @_\

USTBHacker的专栏 2714
上一篇: Background Job "Stopped" with SSH
Bai_Yuanyong
博客等级 码龄24年 46粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值