用chr打印出用ascii测试的Perl()

时间:2016-10-29 05:47:31

标签: 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" ;
}

我明白了:

$ ./array_maker.pl one two three four
"one", "two", "three", "four",

我想要这个:

"one", "two", "three", "four" #no comma at end of string. 

4 个答案:

答案 0 :(得分:3)

您可以改为迭代数组索引,并添加逗号unless $i == $#array;

但这是另一种方式

print join $comma, map { "$d_quote$_$d_quote" } @total;

答案 1 :(得分:2)

在循环开始时(必要时)比在结尾处打印逗号要容易得多。

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。你真的应该使用Text::CSV_XS了!

use Text::CSV_XS qw( );

my $csv = Text::CSV_XS->new({ binary => 1, auto_diag => 2 });

$csv->say(\*STDOUT, \@total);

将在必要时添加引号,并在必要时使用转义。

答案 2 :(得分:0)

这是一种方式

{{1}}

答案 3 :(得分:0)

交互方式是:

$(document).ready(function () {
    var player = new YT.Player('youtube_videos_url');
    $('#fs').on('click', function () {
        player.playVideo();
        var $$ = document.querySelector.bind(document);
        var iframe = $$('#youtube_videos_url');
        var req = iframe.requestFullscreen
                || iframe.webkitRequestFullscreen
                || iframe.mozRequestFullScreen
                || iframe.msRequestFullscreen;
        req.call(iframe);
    });
});