Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl使用chr()打印ascii测试_Perl - Fatal编程技术网

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]”;