Yanıtlar:
Perl hata ayıklayıcısını önemsiz bir programda kullanabilirsiniz, örneğin:
perl -de1
Alternatif olarak Alexis Sukrieh'in Perl Konsolu uygulaması var, ama ben kullanmadım.
control
+ L
bu komut arayüzü altında çalışmıyor, ekranı nasıl yenileyebilirim?
rlwrap
). Tüm üçüncü taraf REPL / konsol çözümlerinin perlconsole
kurulumu da zahmetlidir ve genellikle daha fazla sınırlaması vardır.
perl -de1
desteklemiyor gibi görünüyor my
ve hash'ler de herhangi bir nedenle çalışmıyor ...
perlconsole
bu sorunlardan muzdarip değildir.
Matt Trout sadece bir REPL hakkında bir makale yazmakla kalmadı, aslında bir tane yazdı - Devel :: REPL
Biraz kullandım ve oldukça iyi çalışıyor ve aktif geliştirme aşamasında.
BTW, birisinin neden konsoldan "perl -e" kullanarak bahsettiği kişiyi değiştirdiğine dair hiçbir fikrim yok. Bu gerçekten bir REPL değil, doğru, ama fevkalade faydalı ve her zaman kullanıyorum.
[sudo] cpan Devel::REPL
Ne OSX 10.10 (Perl 5.18.2) ne de Ubuntu 14.04 (Perl 5.18.2) üzerinde koşmak benim için işe yaramadı: Eksik modüller hakkında şikayet eden çalışma zamanı hataları alıyorum; birini takıp başka bir eksik modül bildirildikten sonra vazgeçti.
re.pl
yazar Matt Trout, birkaç alternatif listeleyen bir makale yazdı ve kendisi reply
yerine şunu önerdi re.pl
: shadow.cat/blog/matt-s-trout/mstpan-17
"Psh" dediğim bir senaryo yazdım:
#! /usr/bin/perl
while (<>) {
chomp;
my $result = eval;
print "$_ = $result\n";
}
Ne yazarsanız yazın, Perl'de şunları değerlendirir:
> 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
Tarih istiyorsanız, rlwrap kullanın . Bu sizin ~/bin/ips
örneğiniz olabilir:
#!/bin/sh
echo 'This is Interactive Perl shell'
rlwrap -A -pgreen -S"perl> " perl -wnE'say eval()//$@'
Ve işte böyle görünüyor:
$ ips
This is Interactive Perl shell
perl> 2**128
3.40282366920938e+38
perl>
alias iperl='rlwrap -A -S "perl> " perl -wnE '\''say eval()//$@'\'
. OSX kullanıcıları yükleyebilir rlwrap
aracılığı Homebrew ile brew install rlwrap
.
rlwrap -A -pgreen -S'perl> ' perl -MData::Dumper -wnE'say Dumper[eval()]//$@'
Sanırım perl için bir REPL (Oku, Değerlendir, Yazdır, Döngü) arayüzü soruyorsun. Bunu yapmanın birkaç yolu var:
Komut satırını konsol olarak kullanıyorum:
$ perl -e 'print "JAPH\n"'
Sonra eski komutları geri almak için bash geçmişimi kullanabilirim. Ancak bu durumu korumaz.
Bu form en çok "küçük bir şeyi" test etmek istediğinizde yararlıdır (Perl sorularını yanıtlarken olduğu gibi). Genellikle, bu komutların bir kabuk betiği veya makefile kelimesi kelimesine kazındığını görüyorum.
fish
ihtiyacın bile yok \n
.
Python'da olduğu gibi yerleşik Perl için etkileşimli bir konsol yoktur. Bununla birlikte Perl Hata Ayıklayıcı'yı hata ayıklama ile ilgili şeyler yapmak için kullanabilirsiniz. -D seçeneğiyle açarsınız, ancak bunu öğrenmek için 'man perldebug'a göz atmak isteyebilirsiniz.
Biraz googling yaptıktan sonra, bulabileceğiniz Perl konsolunu uygulayan ayrı bir proje var. http://www.sukria.net/perlconsole.html .
Bu yardımcı olur umarım!
Her zaman yerleşik hata ayıklayıcıya düşebilir ve oradan komutları çalıştırabilirsiniz.
perl -d -e 1
İki popüler Perl REPL var.
sudo apt-get install libreply-perl
. Sonra sadece reply
bir terminalde yazarak çalıştırılabilir .
Linux, macOS ve Windows üzerinde çalışan perli
bir Perl REPL oluşturdum .
Odak noktası otomatik sonuç yazdırma, uygun belge aramaları ve düzenli ifade eşleşmelerinin kolay denetimi.
Ekran görüntülerini burada görebilirsiniz .
Tek başına çalışır (Perl'den başka bir bağımlılığı yoktur), ancak komut satırı düzenlemesini, kalıcı komut geçmişini ve sekme tamamlamayı desteklemek için kurulumu rlwrap
şiddetle önerilir - buradan daha fazla bilgi edinin .
Kurulum
Node.js yüklüyse:
npm install -g perli
Aksi takdirde:
Unix platformlarında -like: İndir Bu senaryoyu olarak perli
sisteminizin yolunda bir klasöre ile çalıştırılabilir hale chmod +x
.
Windows : Bu komut dosyasını sistem yolundaki bir klasöre perli.pl
( .pl
uzantıyı not edin ) olarak indirin .
Perli'yi şu şekilde çağırmanın sakıncası yoksa perli.pl
, hazırsınız demektir.
Aksi takdirde, perli.cmd
aşağıdaki içerikle aynı klasörde bir toplu iş dosyası oluşturun @%~dpn.pl %*
:; bu da çağrıyı mümkün kılar perli
.
perldoc
dan perli
gibi repl 'someCommand ?'
. Görünüşe göre bir süredir güncellenmemiş, hala perli mi koruyorsun?
perli
bir süredir güncellenmedi, çünkü kişisel kullanımımda herhangi bir sorunla karşılaşmadım ve birkaç kişi bunu kullanıyor gibi görünüyor, ancak bildiğim kadarıyla hala reklamı yapıldığı gibi çalışıyor.
perl -d
senin arkadaşın:
% perl -de 0
Devel'den re.pl :: REPL
Okuma-değerlendirme-yazdırma döngüsü:
$ perl -e'while(<>){print eval,"\n"}'
Perl'in bir konsolu yok, ancak hata ayıklayıcı bir olarak kullanılabilir. Komut istemine yazın perl -de 1
. ("1" değeri önemli değildir, yalnızca hiçbir şey yapmayan geçerli bir ifadedir.)
Ayrıca Perl kabuğu için birkaç seçenek var .
Daha fazla bilgi için perlfaq3'ü okuyun .
Burada psh'yi inceleyebilirsiniz: http://gnp.github.io/psh/
Kabuk dolu (örneğin bash'ın yerine kullanabilirsiniz), ancak perl sözdizimini kullanır .. böylece anında yöntemler oluşturabilirsiniz.
Matt Alabalık bakış listeleri beş ila seçimler perl -de 0
sonrası ve o önerir Reply
eklentileri aracılığıyla genişletilebilirlik önemlidir, yoksa eğer, tinyrepl
gelen Eval::WithLexicals
Taleb destek ve sözcük kalıcılığını içeren minimal, saf-perl çözüm için.
Güncelleme: O zamandan beri indirilebilir bir REPL oluşturdum - diğer cevabımı görün .
Gezin faydası ile:
rlwrap
bir komuta readline desteği sağlayan CLI yüklerseniz , kullanılabilir bir REPL oluşturmak için basit bir Perl komutuyla birleştirebilir ve böylece üçüncü taraf REPL çözümleri olmadan bunu yapabilirsiniz.
rlwrap
aracılığıyla Homebrew ile brew install rlwrap
.rlwrap
ilgili paket yöneticileri aracılığıyla sunmalıdır ; örneğin, Ubuntu üzerinde kullanın sudo apt-get install rlwrap
.rlwrap
ve Perl komutu için Ján Sáreník'in cevabına bakınız .Alacağınız OLMAYAN Ne Jan'ın cevap:
Bunları (önemsiz olmayan kurulum + ek, açık olmayan adımlar ile) sunan tek üçüncü taraf çözümü psh'dir , ancak:
yaklaşık 2.5 yıldır faaliyet göstermedi
onun odak o tam teşekküllü olmayı hedeflediği farklıdır kabuk değiştirme ve böylece otomatik olarak bir komut değerlendirmek etmediğini araçlarının geleneksel kabuk, gibi çalışır Perl açıklamada, ve bu şekilde açık bir çıkış komutu gerektirir print
için ifadenin sonucunu yazdırır.
Ján Sáreník'in cevabı bir şekilde geliştirilebilir:
Eğer yüklerseniz Data::Printer
ile modül [sudo] cpan Data::Printer
bir kerelik operasyonu olarak, sen kullanımı için repl içine yükleyebilirsiniz p()
Eğer sayımı için listeleri / diziler / hashtables geçebildiği işlevin.
POSIX benzeri kabuğunuzun başlatma dosyasına (ör. ) Koyabileceğiniz readline ve support adındaiperl
Data::Printer
bir takma ad~/.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()//$@'\'
Örneğin, tüm ortam değişkenlerini hashtable üzerinden yazdırmak için aşağıdakileri yapabilirsiniz %ENV
:
$ iperl # start the REPL
iperl> p %ENV # print key-value pairs in hashtable %ENV
Ján'ın cevabında olduğu gibi, bir ifadenin skaler sonucu otomatik olarak yazdırılır; Örneğin:
iperl> 22 / 7 # automatically print scalar result of expression: 3.14285714285714
Ayrıca CPAN'da ptkdb arayın: http://search.cpan.org/search?query=ptkdb&mode=all
Sepya ve PDE'nin de kendi REPL'leri vardır (GNU Emacs için).
Ayrıca bkz. Şık REPL (GNU Emacs için) http://blog.jrock.us/articles/Stylish%20REPL.pod
Çevrimiçi olarak (hayattaki birçok şey gibi) buradan yapabilirsiniz:
$ rlwrap perl -d -e 1
Tarih ve tutarlı bir bilgi istemi