2009-06-21 13 views
6

Jak mogę sprawdzić, czy zmienna ma określoną wartość w Perlu? Czy istnieje polecenie zatrzymania wykonywania skryptu w celu wyszukania niektórych jego zmiennych?Jak mogę mieć asercje zmiennych w Perlu?

Zastanawiam się, czy mogę skorzystać z praktyki pythonic wstawiania:

assert 0, (foo, bar) 

do debugowania skryptów w sposób debuger mniej?

Odpowiedz

2

Istnieje skrypt o numerze PerlMonks, który wprowadza metodę szybkiego potwierdzenia.

Szybkość jest ważna, ponieważ Perl jest interpretowany, a wszelkie kontrole inline wpłynie na wydajność (w odróżnieniu od prostych makr C na przykład)


Nie jestem pewien, czy te rzeczy będą bezpośrednio użyteczny.


Ok! Tego właśnie szukałem - PDF Warning: Test-Tutorial.pdf. Test::Harness służy do pisania testów modułu Perla.

10

Szybkie wyszukiwanie CPAN sugeruje Carp::Assert.

+1

+1 za wpisanie większej ilości znaków szybciej niż ja. Zamierzam jednak zmienić adres URL, by był agnostyczny. –

+0

Zamierzałem skomentować twoją odpowiedź na temat wykończenia zdjęć. Jeśli chodzi o URL, ciągle to zapominam, dzięki. – Telemachus

5

Smart::Comments są ładne.

+0

Inteligentne :: Komentarze ++ W połączeniu z przełącznikiem -ENV jest to fantastyczne narzędzie do tego typu rzeczy. Znacznie lepsze niż usunięcie wszystkich testów przed rozpoczęciem produkcji, jak sugerował ktoś inny. – RET

1
$var_to_check =~ /sometest/ or die "bad variable!"; 

staram się rzucać takie rzeczy w moim kodu, a później użyć do znajdowania i zamieniania ich pozbyć (w kodzie produkcji).

Również "eval" może być użyte do uruchomienia sekcji kodu i przechwycenia błędów i może być użyte do stworzenia funkcji obsługi wyjątków. Jeśli twierdzisz, że wartość nie wynosi 0, być może chcesz rzucić wyjątek i obsłużyć ten przypadek w specjalny sposób?

0
if ($next_sunrise_time > 24*60*60) { warn("assertion failed"); } # Assert that the sun must rise in the next 24 hours. 

Można to zrobić, jeśli nie masz dostępu do Perl 5.9, która jest wymagana dla Carp::Assert.

Powiązane problemy