2012-04-22 12 views
5

Jest to bardzo proste i niekrytyczne pytanie. Mam eonowe tło programistyczne (zaczynając od FORTRANA, tak było dawno temu) i pracuję nad poznaniem podstaw kodowania perla za pomocą Perfonu początkowego Simona Cozena o nazwie . Zadania rozdziału 2 obejmują napisanie prostego programu do interpretacji wpisu liczby całkowitej (<STDIN>) i wydrukowanie dziesiętnej liczby całkowitej równej liczbie. Mam system Windows 7. Po wprowadzeniu liczby całkowitej program wyświetla ostrzeżenie o tym, że wyświetli poprawny numer heksadecymalny.Początek Perl <STDIN>

Kod jest

$number = <STDIN>; 
print hex($number), "\n"; 

Kiedy zmienić program do wysyłania e ósemkowy nie dostanę ostrzeżenie.

Ostrzeżenie informuje, że niedozwolona cyfra występuje w linii wydruku, nawet jeśli odnosi się do linii STDIN. Czy ma to związek z klawiszem Enter? Jeśli tak, dlaczego wersja oś tego samego programu nie ma problemu?

Odpowiedz

8

Problem polega na tym, że $number ma nadal terminator linii; użyj chomp, aby go usunąć.

+1

W szczególności, 'chomp ($ number = );' jest idiomatyczne. – Sean

+0

Zobacz 'perldoc -f chomp' dla szczegółów. – shawnhcorey

0

W odróżnieniu od funkcji szesnastkowej funkcja oct usuwa nieliczbowe. Z dokumentów "wiodąca biała przestrzeń jest ignorowana bez ostrzeżenia, podobnie jak wszelkie końcowe znaki niebędące cyframi"