打印,放置,说出和转义字符

时间:2019-01-10 09:18:04

标签: string perl6

根据文档,printsay之间的唯一区别似乎是事实,后者添加了“ \ n”(并使用.gist进行了字符串化)。但是,

perl6 -e 'print "del\b\b"'

打印“ d”,有效地应用转义字符,而

perl6 -e 'put "del\b\b"'

将输出“ del”(与say相同)。除了.gist和简单的.Str之外,还有第三种字符串字符串化方法吗?

事实上,\b后面的任何字符都会使它们的行为相同。那么为什么会发生这种情况呢?

2 个答案:

答案 0 :(得分:10)

FWIW,无论使用print还是put,在两种情况下我都看到“ del”,所以也许有些终端设置会影响行为?

\b\b仅在您将字符实际放在字符之后时才变得明显:

say "del\b\bo the right thing"  # do the right thing

\b仅将光标移回一个位置。它不会自行擦除任何内容。如果要删除字符,则必须先使它们后跟空格,然后再退格(如果要在其后再输入任何文本):

print "del\b\b  \b\b"           # d

答案 1 :(得分:7)

要查看正在输出的内容,而不会混淆终端的功能,可以通过xxd(或od)进行管道传输

$ perl6 -e 'say "del\b\b"' | xxd
00000000: 6465 6c08 080a                           del...
$ perl6 -e 'print "del\b\b"' | xxd
00000000: 6465 6c08 08                             del..
$ perl6 -e 'put "del\b\b"' | xxd
00000000: 6465 6c08 080a                           del...