Perl 용 대화식 콘솔을 시작하려면 어떻게해야합니까?
irb
Ruby 또는 python
Python 명령 과 유사한 Perl 용 대화식 콘솔을 시작하려면 어떻게 해야합니까?
다음과 같이 간단한 프로그램에서 perl 디버거를 사용할 수 있습니다.
perl -de1
또는 Alexis Sukrieh 의 Perl Console 응용 프로그램이 있지만 사용하지 않았습니다.
Matt Trout은 REPL에 관한 기사를 썼을뿐만 아니라 실제로는 한 권을 썼습니다 -Devel :: REPL
나는 그것을 조금 사용했고 꽤 잘 작동하며 활발한 개발 중입니다.
BTW, 나는 왜 누군가 콘솔에서 "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>
펄에 대한 REPL (읽기, 평가, 인쇄, 루프) 인터페이스에 대해 묻는 것 같습니다. 이를 수행하는 몇 가지 방법이 있습니다.
- Matt Trout에는 글 을 쓰는 방법을 설명하는 기사 가 있습니다.
- Adriano Ferreira 가 몇 가지 옵션을 설명했습니다
- 마지막으로 irc.perl.org에서 IRC를 타고 많은 인기 채널에서 평가판 봇 중 하나를 시험해 볼 수 있습니다. 그들은 당신이 그들에게 전달하는 펄 덩어리를 평가합니다.
명령 줄을 콘솔로 사용합니다.
$ perl -e 'print "JAPH\n"'
그런 다음 bash 기록을 사용 하여 이전 명령을 다시 가져올 수 있습니다 . 그러나 이것은 상태를 보존하지 않습니다.
이 양식은 "하나의 작은 것"을 테스트 할 때 가장 유용합니다 (Perl 질문에 대답 할 때와 같이). 종종 이러한 명령이 셸 스크립트 또는 makefile에 그대로 스크랩됩니다.
Python처럼 내장 된 Perl 용 대화식 콘솔은 없습니다. 그러나 Perl Debugger를 사용하여 디버깅 관련 작업을 수행 할 수 있습니다. -d 옵션을 사용하여 켤 수 있지만 'man perldebug'를 확인하여 배울 수 있습니다.
약간의 인터넷 검색 후에는 Perl 콘솔을 구현하는 별도의 프로젝트가 있습니다. http://www.sukria.net/perlconsole.html .
도움이 되었기를 바랍니다!
항상 내장 디버거에 넣고 명령을 실행할 수 있습니다.
perl -d -e 1
인기있는 Perl REPL이 두 가지 있습니다.
- Devel :: REPL 은 훌륭합니다.
- 그러나 IMO 회신 이 더 좋습니다.
Linux, macOS 및 Windows에서 실행 perli
되는 Perl REPL 을 만들었습니다 .
자동 결과 인쇄, 편리한 문서 조회 및 정규식 일치에 대한 쉬운 검사에 중점을 둡니다. 여기에서
스크린 샷을 볼 수 있습니다 .
독립 실행 형으로 작동 하지만 (Perl 이외의 종속성은 없지만) 명령 줄 편집, 영구 명령 기록 및 탭 완성을 지원하려면 설치를 rlwrap
적극 권장 합니다 .
설치
Node.js를 설치 한 경우 :
npm install -g perli
그렇지 않으면:
perl -d
당신의 친구입니다:
% perl -de 0
Devel :: REPL에서 re.pl
나는 항상했다 :
rlwrap perl -wlne'eval;print$@if$@'
5.10에서는 다음으로 전환했습니다.
rlwrap perl -wnE'say eval()//$@'
(rlwrap은 선택 사항입니다)
읽기 평가 인쇄 루프 :
$ perl -e'while(<>){print eval,"\n"}'
Perl에는 콘솔이 없지만 디버거를 콘솔로 사용할 수 있습니다. 명령 프롬프트에서을 입력하십시오 perl -de 1
. 값 "1"은 중요하지 않으며 아무 것도하지 않는 유효한 명령문 일뿐입니다.
Perl 쉘 에는 몇 가지 옵션이 있습니다 .
여기서 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 지원을 제공하는 경우 CLI를 간단한 Perl 명령과 결합하여 사용 가능한 REPL을 작성하여 써드 파티 REPL 솔루션없이 수행 할 수 있습니다.- OSX 에서을 사용
rlwrap
하여 Homebrew 를 통해 설치할 수 있습니다brew install rlwrap
. - Linux 배포판은
rlwrap
해당 패키지 관리자를 통해 제공해야합니다 . 예를 들어 우분투에서는을 사용하십시오sudo apt-get install rlwrap
. - 상기의 조합 과 Perl 명령에 대해서는 Ján Sáreník의 답변 을 참조하십시오
rlwrap
.
- 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 지원 및 어휘 지속성을 포함하는 최소한의, 순수 펄 솔루션.
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 참조
참고 URL : https://stackoverflow.com/questions/73667/how-can-i-start-an-interactive-console-for-perl
'Programing' 카테고리의 다른 글
Jenkins의 내보내기 / 가져 오기 작업 (0) | 2020.04.04 |
---|---|
배치 스크립트를 사용하여 디렉토리의 각 파일에 무언가를 수행하는 방법 (0) | 2020.04.04 |
jQuery로 키 누르기 이벤트를 트리거하는 확실한 방법 (0) | 2020.04.04 |
django queryset에서 OR 조건을 수행하는 방법은 무엇입니까? (0) | 2020.04.04 |
문자열이 패턴과 일치하는지 확인 (0) | 2020.04.03 |