답변:
다음과 같이 간단한 프로그램에서 perl 디버거를 사용할 수 있습니다.
perl -de1
또는 Alexis Sukrieh 의 Perl Console 응용 프로그램이 있지만 사용하지 않았습니다.
control
+ L
이 명령 인터페이스에서 작동하지 않습니다. 화면을 어떻게 새로 고쳐야합니까?
rlwrap
). 을 (를) 포함한 모든 타사 REPL / 콘솔 솔루션 perlconsole
은 설치하기에 번거롭고 더 많은 제한 사항이 있습니다.
perl -de1
를 지원하지 않는 것으로 보이며 my
해시가 어떤 이유로 든 작동하지 않습니다…
perlconsole
이러한 문제로 고통받지 않습니다.
Matt Trout은 REPL에 관한 기사를 썼을뿐만 아니라 실제로는 한 권을 썼습니다 -Devel :: REPL
나는 그것을 조금 사용했고 꽤 잘 작동하며 활발한 개발 중입니다.
BTW, 나는 왜 누군가 콘솔에서 "perl -e"를 사용한다고 언급 한 사람을 수정했는지 모른다. 이것은 실제로는 REPL이 아니지만 환상적으로 유용하며 항상 사용합니다.
[sudo] cpan Devel::REPL
OSX 10.10 (Perl 5.18.2) 또는 Ubuntu 14.04 (Perl 5.18.2)에서는 단순히 실행 이 작동하지 않았습니다. 모듈 누락에 대해 불평하는 런타임 오류가 발생합니다. 누락 된 다른 모듈이보고 된 후 포기했습니다.
re.pl
는 몇 가지 대안을 제시하는 기사를 작성했으며 reply
대신 re.pl
다음 을 대신 사용할 것을 제안합니다 . shadow.cat/blog/matt-s-trout/mstpan-17
"psh"라고하는 스크립트를 작성했습니다.
#! /usr/bin/perl
while (<>) {
chomp;
my $result = eval;
print "$_ = $result\n";
}
입력 한 내용이 무엇이든 Perl로 평가됩니다.
> gmtime(2**30)
gmtime(2**30) = Sat Jan 10 13:37:04 2004
> $x = 'foo'
$x = 'foo' = foo
> $x =~ s/o/a/g
$x =~ s/o/a/g = 2
> $x
$x = faa
히스토리를 원하면 rlwrap을 사용 하십시오 . 이것은 당신이 될 수있는 ~/bin/ips
예를 들어 :
#!/bin/sh
echo 'This is Interactive Perl shell'
rlwrap -A -pgreen -S"perl> " perl -wnE'say eval()//$@'
그리고 이것은 다음과 같이 보입니다 :
$ ips
This is Interactive Perl shell
perl> 2**128
3.40282366920938e+38
perl>
rlwrap -A -pgreen -S'perl> ' perl -MData::Dumper -wnE'say Dumper[eval()]//$@'
펄에 대한 REPL (읽기, 평가, 인쇄, 루프) 인터페이스에 대해 묻는 것 같습니다. 이를 수행하는 몇 가지 방법이 있습니다.
Python처럼 내장 된 Perl 용 대화식 콘솔은 없습니다. 그러나 Perl Debugger를 사용하여 디버깅 관련 작업을 수행 할 수 있습니다. -d 옵션을 사용하여 켤 수 있지만 'man perldebug'를 확인하여 배울 수 있습니다.
약간의 인터넷 검색 후에는 Perl 콘솔을 구현하는 별도의 프로젝트가 있습니다. http://www.sukria.net/perlconsole.html .
도움이 되었기를 바랍니다!
인기있는 Perl REPL은 두 가지가 있습니다.
sudo apt-get install libreply-perl
있습니다. 그러면 reply
터미널에 간단히 입력하여 실행할 수 있습니다 .
Linux, macOS 및 Windows에서 실행 perli
되는 Perl REPL 을 만들었습니다 .
자동 결과 인쇄, 편리한 문서 조회 및 정규식 일치에 대한 쉬운 검사에 중점을 둡니다. 여기에서
스크린 샷을 볼 수 있습니다 .
독립형으로 작동 하지만 (Perl 이외의 종속성은 없지만) 명령 줄 편집, 영구 명령 기록 및 탭 완성을 지원하려면 설치를 rlwrap
적극 권장 합니다 .
설치
Node.js를 설치 한 경우 :
npm install -g perli
그렇지 않으면:
perldoc
에서 perli
와 같이 REPL 'someCommand ?'
. 한동안 업데이트되지 않은 것 같습니다. 여전히 perli를 유지하고 있습니까?
Devel :: REPL에서 re.pl
당신은 여기에 psh를 볼 수 있습니다 : http://gnp.github.io/psh/
쉘에 가득 차 있지만 (예를 들어 bash 대신 사용할 수 있음) perl 구문을 사용합니다. 따라서 즉시 메소드를 작성할 수 있습니다.
매트 송어의 개요 목록 오 개에서 선택, perl -de 0
이후, 그는 권장 Reply
플러그인을 통해 확장 성이 중요한 경우, 또는, tinyrepl
에서 Eval::WithLexicals
의 readline 지원 및 어휘 지속성을 포함하는 최소한의, 순수 펄 솔루션.
업데이트 : 이후 다운로드 가능한 REPL을 만들었습니다 . 다른 답변을 참조하십시오 .
후시의 이점으로 :
rlwrap
간단한 Perl 명령과 결합하여 사용 가능한 REPL을 작성할 수 있습니다 써드 파티 REPL 솔루션없이 수행 할 수 있습니다.
rlwrap
하여 Homebrew 를 통해 설치할 수 있습니다 brew install rlwrap
.rlwrap
해당 패키지 관리자를 통해 제공해야합니다 . 예를 들어 우분투에서는을 사용하십시오 sudo apt-get install rlwrap
.rlwrap
.Ján의 답변으로 얻을 수없는 것 :
이러한 기능을 제공하는 유일한 타사 솔루션 (사소한 설치 + 추가의 명백한 단계 포함)은 psh 이지만 다음과 같습니다.
약 2.5 년 동안 활동을 보지 못했습니다.
초점은 본격적인 될 것을 목표로 점에서 다른 쉘 교체 , 따라서이 자동으로 명령을 평가하지 않는다는 것을 의미 전통적인 쉘처럼 작동 펄 문을, 그리고 같은 명시 적으로 출력 명령을 필요 print
로 식의 결과를 인쇄합니다.
Ján Sáreník의 답변 은 한 가지 방법으로 향상 될 수 있습니다.
일회성 작업으로 Data::Printer
모듈 을 설치하는 경우 열거 형으로 목록 / 배열 / 해시 테이블을 전달할 수[sudo] cpan Data::Printer
있는 기능 을 사용하기 위해 REPL에 모듈을 로드 p()
할 수 있습니다.
여기의 이름이 별명 iperl
의 readline와 함께 Data::Printer
지원 당신이 넣을 수 있습니다, 당신의 POSIX와 같은 쉘의 초기화 파일 (예 : ~/.bashrc
) :
alias iperl='rlwrap -A -S "iperl> " perl -MData::Printer -wnE '\''BEGIN { say "# Use `p @<arrayOrList>` or `p %<hashTable>` to print arrays/lists/hashtables; e.g.: `p %ENV`"; } say eval()//$@'\'
예를 들어, 다음을 수행하여 해시 테이블을 통해 모든 환경 변수를 인쇄 할 수 있습니다 %ENV
.
$ iperl # start the REPL
iperl> p %ENV # print key-value pairs in hashtable %ENV
Ján의 답변과 마찬가지로 표현식 의 스칼라 결과는 자동으로 인쇄됩니다. 예 :
iperl> 22 / 7 # automatically print scalar result of expression: 3.14285714285714
CPAN에서 ptkdb도 찾으십시오. http://search.cpan.org/search?query=ptkdb&mode=all
세피아와 PDE에는 자체 REPL도 있습니다 (GNU Emacs 용).
스타일리쉬 REPL (GNU Emacs 용) http://blog.jrock.us/articles/Stylish%20REPL.pod 참조
당신은 온라인으로 (생명의 많은 것들처럼) 여기에서 할 수 있습니다 :
$ rlwrap perl -d -e 1
당신은 역사와 일관된 메시지를 얻을 것