我有点像Perl的初学者(与此处的人相比)。我知道足够能够通过命令提示符编写程序来执行许多操作。有一次,我决定写一个构建迷宫的命令提示游戏让我解决它。除了高质量的图形外,它唯一缺少的是能够让我在迷宫中每次移动后都不使用输入而使用WASD控件。
为了让我的游戏工作,我希望能够让Perl从STDIN获取单个字符作为输入,而不需要我使用某些东西来分隔我的输入,比如默认的\n
。我怎么做到这一点?
我曾尝试在网上搜索一个简单的答案,并在我的书中找到,但我似乎找不到任何东西。我尝试设置$/=""
,但这似乎绕过了所有输入。我认为我的问题可能有一个非常简单的答案,但我也担心这可能是不可能的。
此外,$/=""
是否实际上绕过输入,或者输入是否如此之快以至于假设我没有输入任何输入?
答案 0 :(得分:4)
#!/usr/bin/env perl
use strict;
use warnings;
use IO::Prompt;
my $key = prompt '', -1;
print "\nPressed key: $key\n";
perldoc -v '$/'
的相关摘录与设置$/ = ''
相关:
输入记录分隔符,默认为换行符。这影响了Perl的 什么是“线”的想法。像awk的RS变量一样工作,包括 如果设置为空字符串,则将空行视为终止符(空行不能包含任何空格或制表符)。
答案 1 :(得分:1)
答案 2 :(得分:-1)
实现目标的最短途径是使用这种特殊结构:
$/ = \1;
这告诉perl
一次读取一个字符。下次从任何流中读取时(不仅仅是STDIN)
my $char = <STREAM>;
每个作业将读取1个字符。从perlvar“设置$ /到对整数的引用,包含整数的标量或可转换为整数的标量将尝试读取记录而不是行,最大记录大小是引用的整数字符数。“