免费注册 查看新帖 |

Chinaunix

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

print诡异的问题(问题已经解决) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-02-29 21:40 |只看该作者 |倒序浏览
本帖最后由 shuijingfei 于 2012-03-08 16:34 编辑

  各位好
      今天碰到比较神奇的事 。


情景描述:
     我从一个比较简单的文件里读出一个内容放到一个参数里面。
     文件内容:
         a=111
       比如将111的值放到$str1 。


     我将$str1值打印出来,格式如下:
     print $str1."aa\n" ;

       预期结果应该是 111aa,但实际却输出aa1 .


       但我将$str1直接赋值为$str1="111", 不通过读取文件赋值给$str1时,再将$str1打印,
     print $str1."aa\n" ;

       结果是:111aa



很纳闷啊 ,有碰到类似情况的大拿解答一下了。

谢谢





========================================
刚试了下,我在我本机(WINDOWDS)操作系统,可以正常输出,
但是,在我们公司的LINUX机器上还是输出异常 。

灰常的纳闷 。



=========================================
发现是我自己的config_dat.txt 文件有问题 。
我在UE里重新配置了下config_dat.txt ,其他都不改,能成功执行 。

之前的文件,可能存在隐藏的内容在里面 。


谢谢各位的帮忙

谢谢yinyuemi 的提醒

谢谢

论坛徽章:
0
2 [报告]
发表于 2012-02-29 21:58 |只看该作者
上代码看看

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
3 [报告]
发表于 2012-02-29 22:00 |只看该作者
你给我个代码重现下好吗,我特喜欢异灵事件

论坛徽章:
0
4 [报告]
发表于 2012-02-29 22:02 |只看该作者
本帖最后由 shuijingfei 于 2012-02-29 22:17 编辑

回复 2# dwm1235
#!/usr/bin/perl -w
use strict;
use warnings;
use Net::FTP;
my $config_file="/home/etlplus/ETLPLUS/script/kit/config_dat.txt";
open(CFG,$config_file ) || die "can't open config file !\n";
my ($ip1,$ip2,$ip3,$user,$passwd,$remote_dir,$dir);
$dir=$ARGV[0];
while (<CFG>)
{
        if (/ip/){
          $ip1=(split(/;/,(split(/=/,$_))[1]))[0];
          $ip2=(split(/;/,(split(/=/,$_))[1]))[1];
          $ip3=(split(/;/,(split(/=/,$_))[1]))[2];
        } elsif (/username/){
          $user=(split(/=/,$_))[1];
         } elsif (/password/){
           $passwd=(split(/=/,$_))[1];
         } elsif (/task/){
          $remote_dir=(split(/=/,$_))[1];
        #  $dir=(split(/;/,(split(/=/,$_))[1]))[1];
         } else {
            next;
}
}
chomp $passwd;
chomp $user;
chomp $ip1;
chomp $ip2;
chomp $ip3;
chomp $remote_dir;
chomp $dir;
close(CFG);
########################################
print $remote_dir."aaa\n" ;
预期应该是/dwetl/dsproc/rjtaaa,但实际输出aaaetl/dsproc/rjtaaa
########################################
#ip1
BLOCK1: {
my $ftp = Net::FTP->new("$ip1",Passive=>1) or die("Cant connect to " . $ip1);
my $msg = "\nconnect to host:".$ip1."\n";
print $msg;
$ftp->login($user,$passwd) or die("Cannot login in:",$ftp->message);
$msg = "\nlogin to host:".$ip1."\n";
print $msg;
$ftp->binary();
$ftp->cwd($remote_dir."/".$dir) or last BLOCK1 ;
my @remote_dat_files=$ftp->dir();#$ftp->ls与$ftp->dir结果不同,ls显示文件名列表,dir显示文件所有属性列表(文件名,大小,修改日期等)
my @FILES=grep(/\.dat$/i,@remote_dat_files);
foreach my $remote_dat_file (@FILES) {
  my $size=(split(/\s+/,$remote_dat_file))[4];
   chomp $size;
         next  if ($size eq "0") ;
        my  $name=(split(/\s+/,$remote_dat_file))[8];
         chomp $name;
            next if ($name=~m/Rjd_cbs_o_stkasset/);
     #       next if ($name=~m/^a\.dat$/);
     #    die("file_name:".$remote_dir."/".$dir."/".$name) ;
        die("\nFailed!\n"."IP:".$ip1."file_name:".$remote_dir."/".$dir."/".$name."\n") ;
}

$ftp->quit();
}

   

论坛徽章:
0
5 [报告]
发表于 2012-02-29 22:03 |只看该作者
回复 3# zhlong8


    代码已经贴出来了 。
   哈哈

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
6 [报告]
发表于 2012-02-29 22:10 |只看该作者
shuijingfei 发表于 2012-02-29 22:03
回复 3# zhlong8


数据呢,只有一行 a=111 结果很正常

论坛徽章:
0
7 [报告]
发表于 2012-02-29 22:14 |只看该作者
本帖最后由 shuijingfei 于 2012-02-29 22:15 编辑

回复 6# zhlong8
抱歉,数据如下

config_dat.txt:

ip=10.1.67.111;10.1.67.112;10.1.67.113
username=ds
password=ds
task=/dwetl/dsproc/rjt


请看代码中被井号夹住的描述


   

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
8 [报告]
发表于 2012-02-29 22:18 |只看该作者
shuijingfei 发表于 2012-02-29 22:14
回复 6# zhlong8
抱歉,数据如下


我的输出很正常啊,只追踪这一个变量把无用的代码注释掉看看

论坛徽章:
0
9 [报告]
发表于 2012-02-29 22:25 |只看该作者
回复 8# zhlong8


   
好。谢谢 。
可能得等到明天才能执行,情况是在公司发生

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
10 [报告]
发表于 2012-03-01 06:53 |只看该作者
本帖最后由 yinyuemi 于 2012-03-01 06:54 编辑

回复 1# shuijingfei


    猜你的文件里有'\r':
  1. perl -e '$str="111\r";printf $str."aa\n"'
  2. aa1
复制代码
所以 可以执行dos2unix file,后再运行perl script
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP