wordpress   发布时间:2022-04-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了windows – 草莓Perl是%ENV一个普通的对象大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

所以,在Strawberry Perl中,%ENV似乎是一个普通的哈希(至少它没有绑定), 但它似乎也解决了密钥不敏感的问题.鉴于环境,这是有道理的 变量在Power SHell中不区分大小写(我不确定它们之间的确切关系 Windows环境变量和案例).所以,我想知道%ENV如何同时成为一个 普通哈希,并且具有“隐式”键,当您调用它们内置的键时,这些键未列出. %ENV哈希是否神奇而不被束缚? u
所以,在StrawBerry Perl中,%ENV似乎是一个普通的哈希(至少它没有绑定),
但它似乎也解决了密钥不敏感的问题.鉴于环境,这是有道理的
变量在Power Shell中不区分大小写(我不确定它们之@L_450_4@确切关系
Windows环境变量和案例).所以,我想知道%ENV如何同时成为一个
普通哈希,并且具有“隐式”键,当您调用它们内置的键时,这些键未列出.
%ENV哈希是否神奇而不被束缚?

use Strict;
use warnings;

# Env appears to be an ordinary hash
# 'TEMP' is present in the list of environment variables
# but 'temp' is not
printf "$_\n" foreach keys %ENV;

print "\n";

# this gives us the value of $ENV:TEMP
# which makes sense.
printf "uppercase 'temp' maps to %s\n",$ENV{TEMP};

# even though temp is not present in the
# list of keys,the same value appears as for
# $ENV{TEMP}
# This seems to make sense given the behavior of powersHell
# (I am not quite sure what the relationship is between
# Windows environment variables and case,but this seems reasonable.)
printf "lowercase 'temp' maps to %s\n",$ENV{temp};

# However,%ENV is not a tied hash.
printf "Tie status: %s\n",tied(%ENV) // "not a tied variable";

解决方法

以下是来自ActivePerl,但包括StrawBerry Perl在内的每个Perl都会给你同样的东西:

>perl -E"use Devel::Peek; Dump(\%ENV,1);"
SV = IV(0x74b154) At 0x74b154
  REFCNT = 1
  FLAGS = (TEMP,ROK)
  RV = 0x63e33c
  SV = PVHV(0x62a8aC) at 0x63e33c
    REFCNT = 2
    FLAGS = (SMG,RMG,SHAREKEYS)
    MAGIC = 0x639084                               <-------
      MG_VIRTUAL = &PL_vtbl_env
      MG_TYPE = PERL_MAGIC_env(E)
    ARRAY = 0x640794  (0:30,1:22,2:11,3:1)
    hash quality = 107.7%
    KEYS = 47
    FILL = 34
    MAX = 63

如你所见,%ENV是神奇的.但它并没有束缚;这将是魔术类型“P”而不是“E”.

大佬总结

以上是大佬教程为你收集整理的windows – 草莓Perl是%ENV一个普通的对象全部内容,希望文章能够帮你解决windows – 草莓Perl是%ENV一个普通的对象所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。