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

jjm*_*elo 7 string perl6

根据该文档,之间的唯一区别print,并say似乎是后者增加了"\n"的事实(和stringifies使用.gist.但是,

perl6 -e 'print "del\b\b"'
Run Code Online (Sandbox Code Playgroud)

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

perl6 -e 'put "del\b\b"'
Run Code Online (Sandbox Code Playgroud)

将输出"del"(与之相同say).有可能除了.gist简单之外还有第三种字符串化方法.Str吗?

事实上,\b意志背后的任何角色都会使他们以同样的方式行事.那么为什么会发生这种情况呢?

Eli*_*sen 10

FWIW,我在两种情况下都看到"del",无论使用print或是put,所以可能有一些影响行为的终端设置?

\b\b当你真正把字符放在它们之后时,唯一变得明显的是:

say "del\b\bo the right thing"  # do the right thing
Run Code Online (Sandbox Code Playgroud)

\b仅将光标移回一个位置.它本身不会删除任何东西.如果你想要删除字符,你必须让它们后跟空格,然后如果你想再次使用任何文本,那么再次退格:

print "del\b\b  \b\b"           # d
Run Code Online (Sandbox Code Playgroud)


Nor*_*ood 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...
Run Code Online (Sandbox Code Playgroud)