Perl용 대화형 콘솔을 시작하려면 어떻게 해야 합니까?
-
09-06-2019 - |
문제
Perl용 대화형 콘솔을 시작하려면 어떻게 해야 합니까? irb
Ruby에 대한 명령 또는 python
파이썬?
해결책
다음과 같이 간단한 프로그램에서 Perl 디버거를 사용할 수 있습니다.
perl -de1
대안으로는 알렉시스 수크리에님의 Perl 콘솔 응용 프로그램이 있지만 사용하지 않았습니다.
다른 팁
Matt Trout는 REPL에 관한 기사를 썼을 뿐만 아니라 실제로 다음과 같은 기사를 썼습니다. 개발::REPL
조금 사용해본 결과 꽤 잘 작동하고 활발하게 개발 중입니다.
그런데, 왜 누군가 콘솔에서 "perl -e"를 사용한다고 언급한 사람을 수정했는지 모르겠습니다.이것은 실제로 REPL은 아니지만 사실 매우 유용하며 항상 사용합니다.
나는 "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>
나는 당신이 Perl에 대한 REPL(Read, Evaluate, Print, Loop) 인터페이스에 대해 질문하고 있다고 생각합니다.이를 수행하는 몇 가지 방법이 있습니다:
- 맷 트라우트는 기사 작성하는 방법을 설명하는 것입니다.
- 아드리아노 페레이라 몇 가지 옵션을 설명했습니다
- 마지막으로 irc.perl.org의 IRC에 접속하여 많은 인기 채널에서 평가 봇 중 하나를 시험해 볼 수 있습니다.그들은 당신이 전달한 Perl 덩어리를 평가할 것입니다.
저는 명령줄을 콘솔로 사용합니다.
$ perl -e 'print "JAPH\n"'
그러면 내 세게 때리다 이전 명령을 다시 가져오는 기록입니다.그러나 이는 상태를 보존하지 않습니다.
이 양식은 "사소한 것"(예: Perl 질문에 답할 때)을 테스트하려는 경우에 가장 유용합니다.종종 이러한 명령이 쉘 스크립트나 makefile에 그대로 스크랩되는 것을 발견합니다.
Python처럼 내장된 Perl용 대화형 콘솔은 없습니다.그러나 Perl 디버거를 사용하여 디버깅 관련 작업을 수행할 수 있습니다.-d 옵션을 사용하여 활성화할 수 있지만 이에 대해 알아보려면 'man perldebug'를 확인하는 것이 좋습니다.
약간의 인터넷 검색 후에는 Perl 콘솔을 구현하는 별도의 프로젝트가 있으며 다음에서 찾을 수 있습니다. http://www.sukria.net/perlconsole.html.
도움이 되었기를 바랍니다!
언제든지 내장된 디버거에 접속하여 거기에서 명령을 실행할 수 있습니다.
perl -d -e 1
perl -d
당신의 친구입니다:
% perl -de 0
Devel::REPL의 re.pl
나는 항상 그랬다:
perl -wlne'eval;print$@if$@'
5.10에서는 다음으로 전환했습니다.
perl -wnE'say eval()//$@'
읽기-평가-인쇄 루프:
$ perl -e'while(<>){print eval,"\n"}'
여기에서 psh를 살펴볼 수 있습니다. http://gnp.github.io/psh/
쉘 전체를 사용하지만(예를 들어 bash를 대체하여 사용할 수 있음) perl 구문을 사용합니다.즉석에서 메서드를 만들 수 있습니다.
데비안/우분투에서:
$ sudo apt-get install libdevel-repl-perl
$ re.pl
$ sudo apt-get install libapp-repl-perl
$ iperl
업데이트:이후 다운로드 가능한 REPL을 만들었습니다. 내 다른 대답.
나중에 생각해 보면 다음과 같습니다.
- 그만큼 타사 솔루션 기존 답변 중 언급된 것은 다음 중 하나입니다. 사소하지 않고 명백하지 않은 추가 단계 없이 설치가 번거롭거나 작동하지 않음 - 일부 솔루션은 적어도 절반은 포기된 것으로 보입니다.
- 사용 가능한 REPL에는 명령줄 편집 키보드 지원 및 기록 지원을 위한 readline 라이브러리가 필요합니다. - 이것이 많은 타사 솔루션의 문제 지점인지 확인합니다.
- CLI를 설치하면
rlwrap
, 모든 명령에 대한 readline 지원을 제공하는 , 간단한 Perl 명령과 결합하여 사용 가능한 REPL을 생성할 수 있습니다., 따라서 타사 REPL 솔루션 없이도 가능합니다.- OSX에서는 설치할 수 있습니다
rlwrap
~을 통해 홈브류 ~와 함께brew install rlwrap
. - Linux 배포판은 다음을 제공해야 합니다.
rlwrap
해당 패키지 관리자를 통해;예를 들어 Ubuntu에서는 다음을 사용합니다.sudo apt-get install rlwrap
. - 보다 Ján Sáreník의 답변 상기 조합에 대해
rlwrap
그리고 Perl 명령.
- OSX에서는 설치할 수 있습니다
당신이 얻지 못하는 것 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
맷 트라우트의 개요 다섯 가지 선택 사항을 나열합니다. perl -de 0
그 이후로 그는 추천한다. Reply
, 플러그인을 통한 확장성이 중요한 경우 또는 tinyrepl
~에서 Eval::WithLexicals
, readline 지원 및 어휘 지속성을 포함하는 최소한의 순수 Perl 솔루션입니다.
또한 CPAN에서 ptkdb를 찾으십시오.http://search.cpan.org/search?query=ptkdb&mode=all
Sepia와 PDE에는 자체 REPL(GNU Emacs용)도 있습니다.
세련된 REPL(GNU Emacs용)도 참조하세요. http://blog.jrock.us/articles/Stylish%20REPL.pod