免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2597 | 回复: 6
打印 上一主题 下一主题

文件里怎么引用变量 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-08-16 15:01 |只看该作者 |倒序浏览
123.sql内容:select userid, msisdn, testertype, dst_testertype, oper_date from statuser.dw_to_up_result where oper_date = $GDATE

#!/usr/bin/perl
use strict;
use File::Basename;

my $GDATE=20160815;
my @fileContent;
my $fileString;

代码:
    open INFILE, "<123.sql" || die "can't open $123.sql  !";

    @fileContent = <INFILE>;
    chomp(@fileContent);
    $fileString = join " ",@fileContent;
    print "$fileString";


    #while(<INFILE>
    #{
    #    print "$_";
    #}
close INFILE;
输出结果 怎么才能引用$GDATE的值

论坛徽章:
6
丑牛
日期:2014-03-21 15:42:04子鼠
日期:2014-04-12 11:50:17处女座
日期:2014-09-01 09:25:1115-16赛季CBA联赛之吉林
日期:2015-12-22 14:01:5215-16赛季CBA联赛之广东
日期:2016-03-08 18:49:422016科比退役纪念章
日期:2016-07-06 12:19:55
2 [报告]
发表于 2016-08-16 19:12 |只看该作者
这样?
  1. #!/usr/bin/perl
  2. use strict;
  3. use File::Basename;

  4. my $GDATE=20160815;
  5. my @fileContent;
  6. my $fileString;

  7. open INFILE, "<123.sql" || die "can't open $123.sql  !";

  8. @fileContent = <INFILE>;
  9. chomp(@fileContent);
  10. $fileString = join " ",@fileContent;

  11. my $string;
  12. $fileString = qq{\$string = "$fileString"};
  13. eval $fileString;
  14. print $string;

  15. close INFILE;

  16. __END__
复制代码

评分

参与人数 1信誉积分 +10 收起 理由
sunzhiguolu + 10 很给力!

查看全部评分

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
3 [报告]
发表于 2016-08-19 10:58 |只看该作者
回复 2# stanley_tam
大师, 有个地方不明白 还请指点下:
#!/usr/bin/perl -w
use strict;

my $GDATE = '20160815';
while (<DATA>){
    my $line = qq ("$_");
    # eval $line;
}

__DATA__
select userid, msisdn, testertype, dst_testertype, oper_date from statuser.dw_to_up_result where oper_date = $GDATE

这种双层嵌套双引号的情况, 是个啥意思? 好像还必须是这样, 不然就不行! (知道您老人家厉害, 简单点解释就行, 谢谢)

   

论坛徽章:
6
丑牛
日期:2014-03-21 15:42:04子鼠
日期:2014-04-12 11:50:17处女座
日期:2014-09-01 09:25:1115-16赛季CBA联赛之吉林
日期:2015-12-22 14:01:5215-16赛季CBA联赛之广东
日期:2016-03-08 18:49:422016科比退役纪念章
日期:2016-07-06 12:19:55
4 [报告]
发表于 2016-08-19 11:10 |只看该作者
qq相当于双引号,后面的符号成对就可以了,用起来比下面这样方便。
  1. $fileString = "\$string = \"$fileString\"";
复制代码
回复 3# sunzhiguolu


   

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
5 [报告]
发表于 2016-08-19 11:32 |只看该作者
回复 4# stanley_tam
\"$fileString\" 这个双引号的作用能解释下吗, 谢谢.

   

论坛徽章:
6
丑牛
日期:2014-03-21 15:42:04子鼠
日期:2014-04-12 11:50:17处女座
日期:2014-09-01 09:25:1115-16赛季CBA联赛之吉林
日期:2015-12-22 14:01:5215-16赛季CBA联赛之广东
日期:2016-03-08 18:49:422016科比退役纪念章
日期:2016-07-06 12:19:55
6 [报告]
发表于 2016-08-19 15:32 |只看该作者
加了引号变量$fileString的值如下,这样才是一个合法的perl语句。如果没有引号,会报语法错误的。
  1. $string = "select userid, msisdn, testertype, dst_testertype, oper_date from statuser.dw_to_up_result where oper_date = $GDATE"
复制代码
回复 5# sunzhiguolu


   

论坛徽章:
6
15-16赛季CBA联赛之新疆
日期:2016-03-22 22:34:5915-16赛季CBA联赛之山东
日期:2016-04-11 09:08:41程序设计版块每日发帖之星
日期:2016-06-28 06:20:00程序设计版块每日发帖之星
日期:2016-07-19 06:20:00每日论坛发贴之星
日期:2016-07-19 06:20:0015-16赛季CBA联赛之青岛
日期:2016-07-20 22:44:17
7 [报告]
发表于 2016-08-20 00:52 |只看该作者
$>  cat 123.sql |perl -npe '$GDATE="2016-08-18"; s/\$(\w+)/${$1}/g;'
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP