2012-04-22 23 views
5

Đây là một câu hỏi rất đơn giản và không quan trọng. Tôi có một số nền tảng chương trình eons trước đây (bắt đầu với FORTRAN, đó là cách đây bao lâu) và đang làm việc về việc học một số vấn đề cơ bản của mã hóa perl bằng cách sử dụng của Simon Cozen Bắt đầu Perl. Chương 2 bài tập bao gồm viết một chương trình đơn giản để giải thích một mục số nguyên (<STDIN>) và in số nguyên thập phân bằng số. Tôi có Windows 7. Khi số nguyên được nhập, chương trình sẽ xuất ra cảnh báoBắt đầu Perl <STDIN>

Illegal hexadecimal digit ' 
' ignored at [path] line [the line containing the print instruction], <STDIN> line 1 

Sau đó, nó in đúng số hex.

Mã này là

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

Khi tôi thay đổi chương trình để ra một bát phân tôi không nhận được cảnh báo.

Cảnh báo cho biết chữ số bất hợp pháp xuất hiện ở dòng in mặc dù nó tham chiếu đến dòng STDIN. Nó có liên quan đến khóa nhập không? Nếu vậy, tại sao phiên bản oct của cùng một chương trình không có vấn đề?

Trả lời

8

Vấn đề là $number có trình kết thúc dòng trong đó; sử dụng chomp để xóa.

+1

Và đặc biệt, 'chomp ($ number = );' là thành ngữ. – Sean

+0

Xem 'chld'-chomp' để biết chi tiết. – shawnhcorey

0

Không giống như hàm hex hàm oct không phải là số. Từ tài liệu "Không gian trắng hàng đầu bị bỏ qua mà không có cảnh báo, cũng như bất kỳ dấu chữ số sau"