Perl Concat 字符串截断行首

标签 perl variables concatenation truncate

我在 perl 中遇到了一个奇怪的问题,我似乎找不到答案。

我有一个小脚本,可以解析来自外部源(文件、网站等)的数据。解析完数据后,它会将其保存到 CSV 文件中。但是,问题是当我写入文件或打印以筛选数据时,它似乎截断了字符串的开头。我使用了严格和警告,我没有看到任何错误。

下面是一个例子:

print "Name: " . $name . "\n";
print "Type: " . $type. "\n";
print "Price: " . $price . "\n";
print "Count: " . $count . "\n";

它将返回以下内容:
John
Blue
7.99
5

如果我尝试这样做:
print "$name,$type,$price,$count\n";

我得到以下结果:
,7.99,5

我尝试了以下操作以查看问题的开始位置并获得以下结果:
print "$name\n";
print "$name,$type\n";
print "$name,$type,$price\n";
print "$name,$type,$price,$count\n";

结果:
John
John,Blue
,7.99
,7.99,5

我仍在学习 perl,但似乎无法找出(可能是由于缺乏知识)导致这种情况的原因。我尝试调试脚本,但我没有在 price 变量中看到任何会导致这种情况的特殊字符。

最佳答案

$price 中的字符串以回车结束。这会导致您的终端将光标移动到行首,导致前两个字段被后面的字段覆盖。

您可能正在 unix 机器上阅读 Windows 文本文件。转换文件(例如使用 dos2unix ),或使用 s/\s+\z//;而不是 chomp; .

如果 CR 放在字符串的中间,你可以使用 s/\r//g; .

关于Perl Concat 字符串截断行首,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8868406/

相关文章:

python - 如何将变量插入matplotlib的文本方法

珀尔: "Variable will not stay shared"

javascript - 如何在 Javascript 中创建多个变量

perl - 使用 perl DBI 和 postgresql 的连接池

java - 无法将新的字符串实例变量添加到现有代码中

无法理解静态变量的行为

excel - 如何连接单元格值,直到它在 Excel 中找到一个空白,然后在段落的第一行返回结果?

c++ - 关于非类类型错误的问题?

perl - 通过 Perl 的 URI 模块过滤 URL 可以获得什么?

python - 如何在 mySQL 中存储 IP