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+ Lbu komut arayüzü altında çalışmıyor, ekranı nasıl yenileyebilirim?
rlwrap). Tüm üçüncü taraf REPL / konsol çözümlerinin perlconsolekurulumu da zahmetlidir ve genellikle daha fazla sınırlaması vardır.
perl -de1desteklemiyor gibi görünüyor myve hash'ler de herhangi bir nedenle çalışmıyor ...
perlconsolebu 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::REPLNe 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.plyazar Matt Trout, birkaç alternatif listeleyen bir makale yazdı ve kendisi replyyerine ş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 rlwraparacı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.
fishihtiyacı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 replybir terminalde yazarak çalıştırılabilir .
Linux, macOS ve Windows üzerinde çalışan perlibir 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 perliAksi takdirde:
Unix platformlarında -like: İndir Bu senaryoyu olarak perlisisteminizin yolunda bir klasöre ile çalıştırılabilir hale chmod +x.
Windows : Bu komut dosyasını sistem yolundaki bir klasöre perli.pl( .pluzantı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.cmdaş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.
perldocdan perligibi repl 'someCommand ?'. Görünüşe göre bir süredir güncellenmemiş, hala perli mi koruyorsun?
perlibir 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 0sonrası ve o önerir Replyeklentileri aracılığıyla genişletilebilirlik önemlidir, yoksa eğer, tinyreplgelen Eval::WithLexicalsTaleb 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:
rlwrapbir 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.
rlwraparacılığıyla Homebrew ile brew install rlwrap.rlwrapilgili paket yöneticileri aracılığıyla sunmalıdır ; örneğin, Ubuntu üzerinde kullanın sudo apt-get install rlwrap.rlwrapve 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 printiçin ifadenin sonucunu yazdırır.
Ján Sáreník'in cevabı bir şekilde geliştirilebilir:
Eğer yüklerseniz Data::Printerile modül [sudo] cpan Data::Printerbir 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ındaiperlData::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 1Tarih ve tutarlı bir bilgi istemi