2009年5月13日星期三

[PerlChina] Re: 何让perl明白输出中$1这样的东西是字符串,不作变量替换?

既然有变量和非变量,要么就 \\$1 这样吧,
 
或者用连接字符串或者用 sprintf 比较靠谱。

--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
 要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
 要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛

-~----------~----~----~----~------~----~------~--~---

[PerlChina] Re: 何让perl明白输出中$1这样的东西是字符串,不作变量替换?

要高人出来指点一下才行咯

2009/5/14 Ca <calvin.ngei@gmail.com>
试过了,根本不行的。
在这里,q($1) qq($ps) 完全不起作用。因为,这是这里调用 bash 输出,q() qq() 会被当作字符串。里面的 $1 $ps
会被当作perl的变量。perl还会作变量替换。跟用单引号效果一样,都是----不行。

用反斜杠会被perl当作变量的引用,仍然作变量替换。


On 5月14日, 上午11时48分, "hfahe" <hf...@163.com> wrote:
> q($1)
> qq($ps)
>
> 祝好
>
> hfahe
> 2009-05-14
>
> 发件人: Ca
> 发送时间: 2009-05-14 11:34:28
> 收件人: PerlChina Mongers 讨论组
> 抄送:
> 主题: [PerlChina] Re: 何让perl明白输出中$1这样的东西是字符串,不作变量替换?
>
> 回复2楼:
> \$1 这样也不行,会被当成引用,结果打印出来设想要出现 $1 这个字符串的地方还是被替换成空内容
> On 5月14日, 上午11时32分, Ca <calvin.n...@gmail.com> wrote:
>
> > 尝试直接给 $1 $2 $3 加上单引号,这个样子:
> >  $ps=blabla;
> >  system(qq(cat > g.sh << END
> >  pscoast -R95/135/21/41 -JM6i -Ggray -Slightblue -B5 -N1 -W1 -I3 -K >
> > $ps
> >  awk "{print '$1', '$2', '$3', 1/$3^1.8*0.025}" site | psxy -
> > R95/135/21/41 -JM6i -O -Cneis.cpt -Sci -Wthin -H >> $ps
> >  END"));
>
> > 结果完全不行。因为单引号会被当作字符打印出来,而$1 $2 $3还是被当作变量替换掉。
>
> > On 5月14日, 上午11时22分, Calvin <calvin.n...@gmail.com> wrote:
>
> > > $ps=blabla;
> > > system("cat > g.sh << END
> > > pscoast -R95/135/21/41 -JM6i -Ggray -Slightblue -B5 -N1 -W1 -I3 -K>
> > > $ps
> > > awk '{print $1, $2, $3, 1/$3^1.8*0.025}' site | psxy -R95/135/21/41 -
> > > JM6i -O -Cneis.cpt -Sci -Wthin -H >> $ps
> > > END");
>
> > > }
>
> > > 上面这段代码想创建名字为 g.sh 的文件,内容为:
>
> > > pscoast -R95/135/21/41 -JM6i -Ggray -Slightblue -B5 -N1 -W1 -I3 -K>
> > > blabla
> > > awk '{print $1, $2, $3, 1/$3^1.8*0.025}' site | psxy -R95/135/21/41 -
> > > JM6i -O -Cneis.cpt -Sci -Wthin -H >> blabla
>
> > > 但是 $1 $2 $3 会被perl当作变量替换成空内容。如何让perl明白它们是字符串不作变量替换呢?
> > > 多谢。




--

Sent from Guangzhou, 44, China
--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
 要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
 要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛

-~----------~----~----~----~------~----~------~--~---

[PerlChina] Re: 何让perl明白输出中$1这样的东西是字符串,不作变量替换?

试过了,根本不行的。
在这里,q($1) qq($ps) 完全不起作用。因为,这是这里调用 bash 输出,q() qq() 会被当作字符串。里面的 $1 $ps
会被当作perl的变量。perl还会作变量替换。跟用单引号效果一样,都是----不行。

用反斜杠会被perl当作变量的引用,仍然作变量替换。


On 5月14日, 上午11时48分, "hfahe" <hf...@163.com> wrote:
> q($1)
> qq($ps)
>
> 祝好
>
> hfahe
> 2009-05-14
>
> 发件人: Ca
> 发送时间: 2009-05-14 11:34:28
> 收件人: PerlChina Mongers 讨论组
> 抄送:
> 主题: [PerlChina] Re: 何让perl明白输出中$1这样的东西是字符串,不作变量替换?
>
> 回复2楼:
> \$1 这样也不行,会被当成引用,结果打印出来设想要出现 $1 这个字符串的地方还是被替换成空内容
> On 5月14日, 上午11时32分, Ca <calvin.n...@gmail.com> wrote:
>
> > 尝试直接给 $1 $2 $3 加上单引号,这个样子:
> > $ps=blabla;
> > system(qq(cat > g.sh << END
> > pscoast -R95/135/21/41 -JM6i -Ggray -Slightblue -B5 -N1 -W1 -I3 -K >
> > $ps
> > awk "{print '$1', '$2', '$3', 1/$3^1.8*0.025}" site | psxy -
> > R95/135/21/41 -JM6i -O -Cneis.cpt -Sci -Wthin -H >> $ps
> > END"));
>
> > 结果完全不行。因为单引号会被当作字符打印出来,而$1 $2 $3还是被当作变量替换掉。
>
> > On 5月14日, 上午11时22分, Calvin <calvin.n...@gmail.com> wrote:
>
> > > $ps=blabla;
> > > system("cat > g.sh << END
> > > pscoast -R95/135/21/41 -JM6i -Ggray -Slightblue -B5 -N1 -W1 -I3 -K>
> > > $ps
> > > awk '{print $1, $2, $3, 1/$3^1.8*0.025}' site | psxy -R95/135/21/41 -
> > > JM6i -O -Cneis.cpt -Sci -Wthin -H >> $ps
> > > END");
>
> > > }
>
> > > 上面这段代码想创建名字为 g.sh 的文件,内容为:
>
> > > pscoast -R95/135/21/41 -JM6i -Ggray -Slightblue -B5 -N1 -W1 -I3 -K>
> > > blabla
> > > awk '{print $1, $2, $3, 1/$3^1.8*0.025}' site | psxy -R95/135/21/41 -
> > > JM6i -O -Cneis.cpt -Sci -Wthin -H >> blabla
>
> > > 但是 $1 $2 $3 会被perl当作变量替换成空内容。如何让perl明白它们是字符串不作变量替换呢?
> > > 多谢。
--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---

[PerlChina] Re: 何让perl明白输出中$1这样的东西是字符串,不作变量替换?

有点难度,转义也不行呀。

2009/5/14 Ca <calvin.ngei@gmail.com>
这是不可以的。因为会被当作引用。你自己试一下就知道了。


On 5月14日, 下午12时33分, 张晓亮 <alaboszh...@gmail.com> wrote:
> 用  print " \$1 \$2 " 这样也可以吧
>
>   ----- Original Message -----
>   From: hfahe
>   To: perlchina ; PerlChina Mongers 讨论组
>   Sent: Thursday, May 14, 2009 11:48 AM
>   Subject: [PerlChina] Re: 何让perl明白输出中$1这样的东西是字符串,不作变量替换?
>
>   q($1)
>   qq($ps)
>
>   祝好
>
> ------------------------------------------------------------------------------
>
>   hfahe
>   2009-05-14
>
> ------------------------------------------------------------------------------
>
>   发件人: Ca
>   发送时间: 2009-05-14 11:34:28
>   收件人: PerlChina Mongers 讨论组
>   抄送:
>   主题: [PerlChina] Re: 何让perl明白输出中$1这样的东西是字符串,不作变量替换?
>
>   回复2楼:
>   \$1 这样也不行,会被当成引用,结果打印出来设想要出现 $1 这个字符串的地方还是被替换成空内容
>   On 5月14日, 上午11时32分, Ca <calvin.n...@gmail.com> wrote:
>   > 尝试直接给 $1 $2 $3 加上单引号,这个样子:
>   >  $ps=blabla;
>   >  system(qq(cat > g.sh << END
>   >  pscoast -R95/135/21/41 -JM6i -Ggray -Slightblue -B5 -N1 -W1 -I3 -K >
>   > $ps
>   >  awk "{print '$1', '$2', '$3', 1/$3^1.8*0.025}" site | psxy -
>   > R95/135/21/41 -JM6i -O -Cneis.cpt -Sci -Wthin -H >> $ps
>   >  END"));
>
>   > 结果完全不行。因为单引号会被当作字符打印出来,而$1 $2 $3还是被当作变量替换掉。
>
>   > On 5月14日, 上午11时22分, Calvin <calvin.n...@gmail.com> wrote:
>
>   > > $ps=blabla;
>   > > system("cat > g.sh << END
>   > > pscoast -R95/135/21/41 -JM6i -Ggray -Slightblue -B5 -N1 -W1 -I3 -K>
>   > > $ps
>   > > awk '{print $1, $2, $3, 1/$3^1.8*0.025}' site | psxy -R95/135/21/41 -
>   > > JM6i -O -Cneis.cpt -Sci -Wthin -H >> $ps
>   > > END");
>
>   > > }
>
>   > > 上面这段代码想创建名字为 g.sh 的文件,内容为:
>
>   > > pscoast -R95/135/21/41 -JM6i -Ggray -Slightblue -B5 -N1 -W1 -I3 -K>
>   > > blabla
>   > > awk '{print $1, $2, $3, 1/$3^1.8*0.025}' site | psxy -R95/135/21/41 -
>   > > JM6i -O -Cneis.cpt -Sci -Wthin -H >> blabla
>
>   > > 但是 $1 $2 $3 会被perl当作变量替换成空内容。如何让perl明白它们是字符串不作变量替换呢?
>   > > 多谢。




--

Sent from Guangzhou, 44, China
--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
 要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
 要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛

-~----------~----~----~----~------~----~------~--~---

[PerlChina] Re: 何让perl明白输出中$1这样的东西是字符串,不作变量替换?

这是不可以的。因为会被当作引用。你自己试一下就知道了。


On 5月14日, 下午12时33分, 张晓亮 <alaboszh...@gmail.com> wrote:
> 用 print " \$1 \$2 " 这样也可以吧
>
> ----- Original Message -----
> From: hfahe
> To: perlchina ; PerlChina Mongers 讨论组
> Sent: Thursday, May 14, 2009 11:48 AM
> Subject: [PerlChina] Re: 何让perl明白输出中$1这样的东西是字符串,不作变量替换?
>
> q($1)
> qq($ps)
>
> 祝好
>
> ------------------------------------------------------------------------------
>
> hfahe
> 2009-05-14
>
> ------------------------------------------------------------------------------
>
> 发件人: Ca
> 发送时间: 2009-05-14 11:34:28
> 收件人: PerlChina Mongers 讨论组
> 抄送:
> 主题: [PerlChina] Re: 何让perl明白输出中$1这样的东西是字符串,不作变量替换?
>
> 回复2楼:
> \$1 这样也不行,会被当成引用,结果打印出来设想要出现 $1 这个字符串的地方还是被替换成空内容
> On 5月14日, 上午11时32分, Ca <calvin.n...@gmail.com> wrote:
> > 尝试直接给 $1 $2 $3 加上单引号,这个样子:
> > $ps=blabla;
> > system(qq(cat > g.sh << END
> > pscoast -R95/135/21/41 -JM6i -Ggray -Slightblue -B5 -N1 -W1 -I3 -K >
> > $ps
> > awk "{print '$1', '$2', '$3', 1/$3^1.8*0.025}" site | psxy -
> > R95/135/21/41 -JM6i -O -Cneis.cpt -Sci -Wthin -H >> $ps
> > END"));
>
> > 结果完全不行。因为单引号会被当作字符打印出来,而$1 $2 $3还是被当作变量替换掉。
>
> > On 5月14日, 上午11时22分, Calvin <calvin.n...@gmail.com> wrote:
>
> > > $ps=blabla;
> > > system("cat > g.sh << END
> > > pscoast -R95/135/21/41 -JM6i -Ggray -Slightblue -B5 -N1 -W1 -I3 -K>
> > > $ps
> > > awk '{print $1, $2, $3, 1/$3^1.8*0.025}' site | psxy -R95/135/21/41 -
> > > JM6i -O -Cneis.cpt -Sci -Wthin -H >> $ps
> > > END");
>
> > > }
>
> > > 上面这段代码想创建名字为 g.sh 的文件,内容为:
>
> > > pscoast -R95/135/21/41 -JM6i -Ggray -Slightblue -B5 -N1 -W1 -I3 -K>
> > > blabla
> > > awk '{print $1, $2, $3, 1/$3^1.8*0.025}' site | psxy -R95/135/21/41 -
> > > JM6i -O -Cneis.cpt -Sci -Wthin -H >> blabla
>
> > > 但是 $1 $2 $3 会被perl当作变量替换成空内容。如何让perl明白它们是字符串不作变量替换呢?
> > > 多谢。
--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---

[PerlChina] Re: 何让perl明白输出中$1这样的东西是字符串,不作变量替换?

用  print " \$1 \$2 " 这样也可以吧
 
 
 
 
----- Original Message -----
From: hfahe
Sent: Thursday, May 14, 2009 11:48 AM
Subject: [PerlChina] Re: 何让perl明白输出中$1这样的东西是字符串,不作变量替换?

q($1)
qq($ps)
 
 
 
祝好 

hfahe
2009-05-14

发件人: Ca
发送时间: 2009-05-14 11:34:28
收件人: PerlChina Mongers 讨论组
抄送:
主题: [PerlChina] Re: 何让perl明白输出中$1这样的东西是字符串,不作变量替换?
 
回复2楼:
\$1 这样也不行,会被当成引用,结果打印出来设想要出现 $1 这个字符串的地方还是被替换成空内容
On 5月14日, 上午11时32分, Ca <calvin.n...@gmail.com> wrote:
> 尝试直接给 $1 $2 $3 加上单引号,这个样子:
>  $ps=blabla;
>  system(qq(cat > g.sh << END
>  pscoast -R95/135/21/41 -JM6i -Ggray -Slightblue -B5 -N1 -W1 -I3 -K >
> $ps
>  awk "{print '$1', '$2', '$3', 1/$3^1.8*0.025}" site | psxy -
> R95/135/21/41 -JM6i -O -Cneis.cpt -Sci -Wthin -H >> $ps
>  END"));
>
> 结果完全不行。因为单引号会被当作字符打印出来,而$1 $2 $3还是被当作变量替换掉。
>
> On 5月14日, 上午11时22分, Calvin <calvin.n...@gmail.com> wrote:
>
> > $ps=blabla;
> > system("cat > g.sh << END
> > pscoast -R95/135/21/41 -JM6i -Ggray -Slightblue -B5 -N1 -W1 -I3 -K>
> > $ps
> > awk '{print $1, $2, $3, 1/$3^1.8*0.025}' site | psxy -R95/135/21/41 -
> > JM6i -O -Cneis.cpt -Sci -Wthin -H >> $ps
> > END");
>
> > }
>
> > 上面这段代码想创建名字为 g.sh 的文件,内容为:
>
> > pscoast -R95/135/21/41 -JM6i -Ggray -Slightblue -B5 -N1 -W1 -I3 -K>
> > blabla
> > awk '{print $1, $2, $3, 1/$3^1.8*0.025}' site | psxy -R95/135/21/41 -
> > JM6i -O -Cneis.cpt -Sci -Wthin -H >> blabla
>
> > 但是 $1 $2 $3 会被perl当作变量替换成空内容。如何让perl明白它们是字符串不作变量替换呢?
> > 多谢。
--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
 要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
 要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛

-~----------~----~----~----~------~----~------~--~---

[PerlChina] Re: 何让perl明白输出中$1这样的东西是字符串,不作变量替换?

q($1)
qq($ps)
 
 
 
祝好 

hfahe
2009-05-14

发件人: Ca
发送时间: 2009-05-14 11:34:28
收件人: PerlChina Mongers 讨论组
抄送:
主题: [PerlChina] Re: 何让perl明白输出中$1这样的东西是字符串,不作变量替换?
 
回复2楼:
\$1 这样也不行,会被当成引用,结果打印出来设想要出现 $1 这个字符串的地方还是被替换成空内容
On 5月14日, 上午11时32分, Ca <calvin.n...@gmail.com> wrote:
> 尝试直接给 $1 $2 $3 加上单引号,这个样子:
>  $ps=blabla;
>  system(qq(cat > g.sh << END
>  pscoast -R95/135/21/41 -JM6i -Ggray -Slightblue -B5 -N1 -W1 -I3 -K >
> $ps
>  awk "{print '$1', '$2', '$3', 1/$3^1.8*0.025}" site | psxy -
> R95/135/21/41 -JM6i -O -Cneis.cpt -Sci -Wthin -H >> $ps
>  END"));
>
> 结果完全不行。因为单引号会被当作字符打印出来,而$1 $2 $3还是被当作变量替换掉。
>
> On 5月14日, 上午11时22分, Calvin <calvin.n...@gmail.com> wrote:
>
> > $ps=blabla;
> > system("cat > g.sh << END
> > pscoast -R95/135/21/41 -JM6i -Ggray -Slightblue -B5 -N1 -W1 -I3 -K>
> > $ps
> > awk '{print $1, $2, $3, 1/$3^1.8*0.025}' site | psxy -R95/135/21/41 -
> > JM6i -O -Cneis.cpt -Sci -Wthin -H >> $ps
> > END");
>
> > }
>
> > 上面这段代码想创建名字为 g.sh 的文件,内容为:
>
> > pscoast -R95/135/21/41 -JM6i -Ggray -Slightblue -B5 -N1 -W1 -I3 -K>
> > blabla
> > awk '{print $1, $2, $3, 1/$3^1.8*0.025}' site | psxy -R95/135/21/41 -
> > JM6i -O -Cneis.cpt -Sci -Wthin -H >> blabla
>
> > 但是 $1 $2 $3 会被perl当作变量替换成空内容。如何让perl明白它们是字符串不作变量替换呢?
> > 多谢。

--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
 要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
 要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛

-~----------~----~----~----~------~----~------~--~---