Perl操作系统环境变量的脚本代码

 更新时间:2013年02月09日 21:24:52   作者:  
想必很多朋友马上就会想到Perl中提供的$ENV这个特殊的哈希变量,对,在$ENV中完全可以获取到一些系统变量

如何用Perl脚本操作系统环境变量呢?

想必很多朋友马上就会想到Perl中提供的$ENV这个特殊的哈希变量,对,在$ENV中完全可以获取到一些系统变量。怎么获取呢?比如想要知道Path这个系统环境变量的内容,我们可以通过$ENV{'Path'} 来获取。如果想设置Path这个环境变量呢,哈,使用$ENV{'Path'}=‘C:\Windows\System32'来设置。想获取所有的环境变量列表也很简单,哈希遍历不就可以了~

其实,本文中真正想问的是,你在通过上述方法设置了一个环境变量后,右击"我的电脑"的属性,选中高级选项卡后查看的Path变量值真的改变了吗?其实,细心的你会发现,完全没变!但千万不要抱怨Perl欺骗了你,它其实并没有欺骗你,而是你没有真正的理解。其实,Path变量可以通过设置$ENV{'Path'}来设置,但是这个设置所引起的改变只是Session级别的,即你程序级别的。如果还不理解的话,可以想象成打开一个CMD后,输入SET Path="C:\\Royen"所引起的效果,即在这个窗口中运行过程中Path环境变量是"C:\\Royen",而你再打开一个Cmd后的新的窗口的Path变量则会发现完全不是”C:\\Royen“;

所以想要真正的添加或者改变一个系统环境变量,我们需要求助于注册表帮忙。只要找到环境变量在注册表中存储的位置即可。
一般系统变量可以在注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment下面可以找到。

实现:    

复制代码 代码如下:

my $loc="SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment";
my $regkey;
$HKEY_LOCAL_MACHINE->Open($loc,$regkey) || die "Open Registry Fail,Information:$!\n";
$regkey->SetValueEx("PERLLIB",0,REG_SZ,"c:\\staf\\bin;c:\\staf\\bin\\Perl58");

添加环境变量后,记得重启下机器,以使其生效。

相关文章

  • perl uc,lc,ucfirst,lcfirst大小写转换函数

    perl uc,lc,ucfirst,lcfirst大小写转换函数

    这篇文章主要介绍了perl 大小写字母转换函数,需要的朋友可以参考下
    2017-10-10
  • perl高级排序,<=>操作符,飞船操作符

    perl高级排序,<=>操作符,飞船操作符

    perl高级排序的关键在于要指定排序的方式,使用的操作符是spaceship operator(<=>)
    2013-02-02
  • Perl与JS的对比分析(数组、哈希)

    Perl与JS的对比分析(数组、哈希)

    下面小编就为大家带来一篇Perl与JS的对比分析(数组、哈希)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-07-07
  • 一篇文章搞懂:词法作用域、动态作用域、回调函数及闭包

    一篇文章搞懂:词法作用域、动态作用域、回调函数及闭包

    这篇文章主要给大家介绍了如何通过一篇文章搞懂:词法作用域、动态作用域、回调函数及闭包的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧
    2018-12-12
  • Perl实现遍历目录例子

    Perl实现遍历目录例子

    这篇文章主要介绍了Perl实现遍历目录例子,本文示例运行在Windows系统下,而且需要gbk编码,需要的朋友可以参考下
    2014-12-12
  • Perl中的正则表达式介绍

    Perl中的正则表达式介绍

    正则表达式是 Perl 语言的一大特色,也是 Perl 程序中的一点难点,不过如果大家能够很好的掌握他,就可以轻易地用正则表达式来完成字符串处理的任务,当然在 CGI 程序设计中就更能得心应手了
    2013-07-07
  • Windows和Linux系统下perl连接SQL Server数据库的方法

    Windows和Linux系统下perl连接SQL Server数据库的方法

    这篇文章主要介绍了Windows和Linux系统下perl连接SQL Server数据库的方法,本文详细的讲解了Windows和Linux系统中perl如何连接Microsoft SQL Server数据库,需要的朋友可以参考下
    2014-10-10
  • perl 读取所需文件的路径,然后打开相应的文件

    perl 读取所需文件的路径,然后打开相应的文件

    perl,读取所需文件的路径,然后打开相应的文件,并对文件中的DNA序列进行计数,substr函数对长字符串的片段化处理功能
    2013-03-03
  • 学习perl的unless控制结构

    学习perl的unless控制结构

    在perl的if控制结构中,只有当条件表达式为真时才执行某块代码。如果想让程序块在条件为假时才执行,此时可以把if改成unless
    2013-02-02
  • perl批量查询ip归属地的方法代码

    perl批量查询ip归属地的方法代码

    由于业务需要,要查询客户的ip地址,将部分地区的客户过滤出来,感谢黑影子和扶凯的帮忙,推荐了IP::QQWry::Decoded这个模块,该模块是专门用来读取qqwry纯真数据库的,用起来非常简单
    2013-04-04

最新评论