2008-12-10 12 views
27

Geçerli kaynak satırı numarasını Perl'de almak mümkün mü? C++ 'da eşdeğer __LINE__'dur.Kaynak hattı numarasını Perl'de nasıl yazdırabilirim?

+0

Şunu merak ediyorum: neden buna ihtiyacınız var? –

+3

Çok uzun bir süreçte ilerlemeyi hızlı bir şekilde takip etmek ve sipariş noktalarının işlerin bitip tükendiğini kontrol etmek için kullandım, örneğin hata ayıklayıcısını kullanmadan –

+0

@ LeonTimmermans: Bir Perl ile ilgili eski yorumunuza yanıt veriyorum programcı _ _FILE_ _ ve _ _ LINE _ _ isteyebilir. Temel olarak, bir C/C++ programlayıcısının bunları neden isteyebileceğinin aynı sebepleri. Örneğin. Bugün bir testi tekrar test ettim böylece Test :: Differences :: eq_or_diff bir altprogramda çağrıldı. Rapor edilen satır sayısı, alt rutinin nereden alındığı değil, alt programdaydı. Test adına __ LINE __ eklenmesi, başarısız testi bulmama yardımcı olur. Şimdi Perl5'te bir makro CODE_LOCATION yazabilirsem. –

cevap

51
print "File: ", __FILE__, " Line: ", __LINE__, "\n"; 

veya

warn("foo"); 
+4

uyarısı STDERR üzerine yazdıracaktır. – mat

6

Not yeni bir satırdan ile biterse o olmaz baskı satır numarası

perl -e'warn ("fon \ n")'

foo

Bu "die -f perldoc" belgelenen, ancak bölümün referans ölmek "uyarmak -f perldoc" in kaçırmak belki kolay ...

1

Bu senin çizgi yazdırır ve ayrıca edilir "yığın"

while(my @where=caller($frame++)) { print "$frame:" . join(",",@where) . "\n"; } 
1

"Carp kullanmak" ve çeşitli rutinleri ile oynamak ve aynı zamanda bir olsun (arama programlarından hatların listesi (komut/modüller/vs) şu anda bulunduğunuz yerin yol açtığını) stack - cnd tarafından önerilen "arayan" yönteminden daha iyi veya daha kötü olup olmadığından emin değil. Kod ve diğer bilgileri hata ayıklamada bulduğum ama bir hata ayıklama ortamı dışında çok az değer gördüğümü göstermek için C ve Perl'deki HAT ve DOSYA değişkenlerini (ve muhtemelen diğer benzer değişkenleri) kullandım.

İlgili konular