gpt4 book ai didi

perl - 如何将 UTF-8 字符串与 Perl 的 printf 正确对齐?

转载 作者:行者123 更新时间:2023-12-04 14:36:39 28 4
gpt4 key购买 nike

获得漂亮输出的正确方法是什么(所有行都缩进相同)?

#!/usr/bin/env perl
use warnings;
use strict;
use DBI;

my $phone_book = [ [ qw( name number ) ],
[ 'Kroner', 123456789 ],
[ 'Holler', 123456789 ],
[ 'Mühßig', 123456789 ],
[ 'Singer', 123456789 ],
[ 'Maurer', 123456789 ],
];

my $dbh = DBI->connect( "DBI:CSV:", { RaiseError => 1 } );
$dbh->do( qq{ CREATE TEMP TABLE phone_book AS IMPORT( ? ) }, {}, $phone_book );

my $sth = $dbh->prepare( qq{ SELECT name, number FROM phone_book } );
$sth->execute;

my $array_ref = $sth->fetchall_arrayref();

for my $row ( @$array_ref ) {
printf "%9s %10s\n", @$row;
}

# OUTPUT:

# Kroner 123456789
# Holler 123456789
# Mühßig 123456789
# Singer 123456789
# Maurer 123456789

最佳答案

我无法重现它,但松散地说,似乎正在发生的事情是字符编码不匹配。很可能您的 Perl 源文件已保存为 UTF-8 编码。但是您还没有启用 use utf8;在脚本中。因此,它将每个非 ASCII 德语字符解释为两个字符并相应地设置填充。但是您运行的终端也是 UTF-8 模式,因此字符可以正确打印。尝试添加 use warnings;我敢打赌你会打印一个警告,如果添加 use utf8; 我不会感到惊讶实际上解决了问题。

关于perl - 如何将 UTF-8 字符串与 Perl 的 printf 正确对齐?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2064543/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com