12 12
发新话题
打印

[已解决] perl script中如何获得和设置环境变量CCM_ADDR( 此文章被查看:2288次,被回复:11篇!! )

perl script中如何获得和设置环境变量CCM_ADDR

hello,all:

     question1:

         我的环境是active perl 5.8.8 build 820 ,winxp sp2,
          我用$CCM_ADDR=system("ccm start......."),能获得ADDR的正确地址输出,
          但我用print $CCM_ADDR时,打印结果是0,
          为什么结果会不一样呢?
      
    question2:
  
          设置环境变量时我用语句:
         $ENV{'CCM_ADDR'}=$CCM_ADDR,
         该句有错吗?还需要use某个包吗?

        有经验的朋友进来指点一二啊!Many Thanks.

         


问题已经解决 [打开主题]
本主题的最佳答案为 [ 4 楼].



© 本文为 howardlingSCMLife 共同所有,未经同意,请勿转载 ©如该文侵犯了您的版权,请联系管理员
scmlife深圳群:34705784
论坛是我家,维护靠大家!

TOP

回复 #1 howardling 的帖子

$CCM_ADDR=`ccm start.......`;



© 本文为 hasjingSCMLife 共同所有,未经同意,请勿转载 ©如该文侵犯了您的版权,请联系管理员
强身健体,努力减负

TOP

引用:
原帖由 hasjing 于 2007-5-25 00:22 发表
$CCM_ADDR=`ccm start.......`;
测试环境
active perl 5.8.8 build 820 ,winxp sp2 ,简体中文

结果用语句$CCM_ADDR=`ccm start.......`不行,直接返回的就是ccm start的命令行语句,并不返回session 地址值

我不知道我哪里没设置好,执行pl的机器我已经加入bin目录到环境变量了,这个应该不是问题

如果用system("ccm start......."),能获得ADDR的正确地址输出,但就是不能赋值给环境变量$CCM_ADDR,困惑ing!

Thanks hasjing!



[ 本帖最后由 howardling 于 2007-5-27 02:08 编辑 ]



© 本文为 howardlingSCMLife 共同所有,未经同意,请勿转载 ©如该文侵犯了您的版权,请联系管理员
scmlife深圳群:34705784
论坛是我家,维护靠大家!

TOP

Q1
system返回的是ccm start的退出状态,0代表成功
如果需要返回ccm start的输出信息,可以用qx或者``

Q2
没错


最佳答案
该回答被楼主/管理员列为正解!

© 本文为 i子休 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员
ed

TOP

回复 #3 howardling 的帖子

用 `ccm start  ...   `  可以得到  ccm start 命令通过 stdout 返回的输出信息,
如果要获得环境变量 CCM_ADDR 的值,可用用 $ENV("CCM_ADDR") 获得,
设置CCM_ADDR 的值可以用跟你的 Q2 一样!

© 本文为 hasjing 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员
强身健体,努力减负

TOP

在子休的提示下,我用qx(ccm start........)获得了CCM_ADDR的值,
现在奇怪的是为什么在win平台下'ccm start'无法执行呢?
用符号' '包括的内容在win下只能是普通字符串吧。
比如说,print 'ccm start...........',是无法执行里面的命令的,会直接打印出单引号里面的内容。

非常感谢子休和hasjing的跟帖!

© 本文为 howardling 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员
scmlife深圳群:34705784
论坛是我家,维护靠大家!

TOP

应该说,这不是环境变量的问题了

而是如何获得session 地址的问题了!

© 本文为 howardling 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员
scmlife深圳群:34705784
论坛是我家,维护靠大家!

TOP

回复 #7 howardling 的帖子

我想确认一下,你是否是希望在Perl里面Start一个CM的Session,然后
在执行一些自动化的事情?
如果是这样,需要考虑如下问题:
通过Perl system 或者 `` 执行的操作系统命令,
会首先加载一个 sh 进程(在Windows下是cmd)然后通过这个进程执行你的命令,
所以当 system里面的命令执行完后,sh 进程会被释放,sh 进程加载的session可能也被释放了;

所以建议你能先 用 命令行下面 start 起来一个 ccm 的session后,再执行perl的批处理;

关于如何能够再Perl里面执行加载 ccm start,等我有时间时,会试验研究一下;

© 本文为 hasjing 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员
强身健体,努力减负

TOP

回复 #8 hasjing 的帖子

是的,
希望在Perl里面Start一个CM的Session,然后在执行一些自动化的事情;
window下,我的测试结果是:执行system(ccm stop)之前是不会释放cm session的.

© 本文为 howardling 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员
scmlife深圳群:34705784
论坛是我家,维护靠大家!

TOP

引用:
原帖由 howardling 于 2007-5-27 02:11 发表
现在奇怪的是为什么在win平台下'ccm start'无法执行呢?
用符号' '包括的内容在win下只能是普通字符串吧。
比如说,print 'ccm start...........',是无法执行里面的命令的,会直接打印出单引号里面的内容。
执行系统命令的是反引号:`command`

构造字符串的是单引号:'string'

© 本文为 i子休 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员
ed

TOP

 12 12
发新话题