Perl使用chr()打印ascii测试
在这个简单的程序中,我如何在每个实体之间放置一个逗号,但将其保留在末尾Perl使用chr()打印ascii测试,perl,Perl,在这个简单的程序中,我如何在每个实体之间放置一个逗号,但将其保留在末尾 $ cat array_maker.pl #!/usr/bin/perl use strict ; use warnings ; my @total = @ARGV ; my $d_quote = chr(34); my $comma = chr(44); foreach my $total(@total) { print " $d_quote$total$d_quote$comma" ; } 我明白了:
$ cat array_maker.pl
#!/usr/bin/perl
use strict ;
use warnings ;
my @total = @ARGV ;
my $d_quote = chr(34);
my $comma = chr(44);
foreach my $total(@total) {
print " $d_quote$total$d_quote$comma" ;
}
我明白了:
$ ./array_maker.pl one two three four
"one", "two", "three", "four",
我想要这个:
"one", "two", "three", "four" #no comma at end of string.
您可以迭代数组索引,并添加逗号
,除非$i=$\array代码>
但这是另一种方式
print join $comma, map { "$d_quote$_$d_quote" } @total;
您可以迭代数组索引,并添加逗号,除非$i=$\array代码>
但这是另一种方式
print join $comma, map { "$d_quote$_$d_quote" } @total;
这里有一条路
print $d_quote . join("$d_quote$comma$d_quote", @total) . $d_quote;
这里有一条路
print $d_quote . join("$d_quote$comma$d_quote", @total) . $d_quote;
互动的方式是:
for (my $i=0;$i<scalar(@total);$i++)
{
print $d_quote . $total[$i] . $d_quote;
if ($i != (scalar(@total) - 1)) { print $comma; }
}
对于(my$i=0;$i而言,交互方式为:
for (my $i=0;$i<scalar(@total);$i++)
{
print $d_quote . $total[$i] . $d_quote;
if ($i != (scalar(@total) - 1)) { print $comma; }
}
for(my$i=0;$i在循环开始时(必要时)打印逗号要比在循环结束时容易得多
for my $i (0..$#total) {
print "," if $i > 0;
print qq{"$total[$i]"};
}
print("\n");
我不推荐这样做,但它表明您实际上并不需要索引:
for (@total) {
print "," if \$_ != \$total[0];
print qq{"$_"};
}
print("\n");
但是,join
的效果要好得多
print(join(",", map { qq{"$_"} } @total), "\n");
最后,看起来您正在生成CSV。您真的应该使用它
use Text::CSV_XS qw( );
my $csv = Text::CSV_XS->new({ binary => 1, auto_diag => 2 });
$csv->say(\*STDOUT, \@total);
必要时将添加引号,必要时将使用转义符。在循环开始(必要时)打印逗号要比在循环结束时容易得多
for my $i (0..$#total) {
print "," if $i > 0;
print qq{"$total[$i]"};
}
print("\n");
我不推荐这样做,但它表明您实际上并不需要索引:
for (@total) {
print "," if \$_ != \$total[0];
print qq{"$_"};
}
print("\n");
但是,join
的效果要好得多
print(join(",", map { qq{"$_"} } @total), "\n");
最后,看起来您正在生成CSV。您真的应该使用它
use Text::CSV_XS qw( );
my $csv = Text::CSV_XS->new({ binary => 1, auto_diag => 2 });
$csv->say(\*STDOUT, \@total);
必要时会添加引号,必要时会使用转义符。您似乎有一种使事情过于复杂的诀窍!(我的$i=0;$iA noob如果不查更多的东西,就不可能理解其中的任何内容。你在说什么???再看看!它不仅没有使用比你更多的东西,而且它确实使用的东西更有用、更基本。我想我从来没有用过C风格的表示
或标量(@a)
;在日常使用的基础上教授这些很少有用的复杂结构不是一件好事!尤其是当它导致这样的代码不可读时!@SectoKia(1)Perl中几乎不需要C风格的for
循环,而你的循环甚至无法与for(0..$#total)
(2)顺便说一句,标量
在那里是不需要的--$i
可以做到这一点,而且更清晰。(3)如果$i>0
在开始时,你的条件如何比更清晰?//这真的不是Perl代码。@SectoKia至于“noob”如果人们学习C,他们应该学习C语言的方法——如果是C++,你不建议他们写C——如果是Perl,他们应该学习Perl方式和成语——如果是Python……如果有人要用菜刀工作,他们就不应该学习如何使用猎刀。ves。在编程中,当我们开始学习新工具时,我们会从一开始就学习它的方法和习惯用法。它会很快得到回报。所有这些都是为了提供信息,而不是批评。你似乎有一种让事情变得过于复杂的诀窍!(我的$i=0;$iA noob如果不查更多的东西,就不可能理解其中的任何内容。你在说什么???再看看!它不仅没有使用比你更多的东西,而且它确实使用的东西更有用、更基本。我想我从来没有用过C风格的表示
或标量(@a)
;在日常使用的基础上教授这些很少有用的复杂结构不是一件好事!尤其是当它导致这样的代码不可读时!@SectoKia(1)Perl中几乎不需要C风格的for
循环,而你的循环甚至无法与for(0..$#total)
(2)顺便说一句,标量
在那里是不需要的--$i
可以做到这一点,而且更清晰。(3)如果$i>0
在开始时,你的条件如何比更清晰?//这真的不是Perl代码。@SectoKia至于“noob”如果人们学习C,他们应该学习C语言的方法——如果是C++,你不建议他们写C——如果是Perl,他们应该学习Perl方式和成语——如果是Python……如果有人要用菜刀工作,他们就不应该学习如何使用猎刀。在编程中,当我们开始学习新工具时,我们会从一开始就学习它的方法和习惯用法。它会很快得到回报。所有这些都是为了提供信息,而不是关键。这是非常一致的-我希望我可以这样写代码:对于我的$I(0..$#total){print”,“if$I>0;print qq{“$total[$I]”;这是非常一致的-我希望我能写这样的代码:对于我的$I(0..$#total){print”,“如果$I>0;print qq{“$total[$I]”;