Perl中将用户输入拆分为字符数组并验证的问题
解决Perl输入拆分字符数组及移位问题
Hey there! Let's get your input-to-array setup working and get that character shift logic going too.
First, let's break down what's missing in your current code:
- When you grab input with
<STDIN>, it includes the newline character (the one you type when you hit Enter) at the end of the string. That extra character will mess up your array and shift operations if you don't remove it. - You haven't added the code to split your input string into individual characters and store them in an array yet—that's why you can't verify the storage!
Here's a fixed and expanded version of your code that addresses both issues, plus adds the character shift functionality you mentioned:
#!/usr/bin/perl use strict; use warnings; use Data::Dumper; # Get user input and clean it up my $userinput; print "Input? "; $userinput = <STDIN>; chomp $userinput; # Remove the trailing newline from input # Split the input string into an array of single characters my @char_array = split //, $userinput; # Verify the array contents using Data::Dumper print "\nYour input split into individual characters:\n"; print Dumper(\@char_array); # Perform the character shift (each character up by one) print "\nAfter shifting each character up by one:\n"; foreach my $char (@char_array) { # Convert character to ASCII code, add 1, then convert back to character my $shifted_char = chr(ord($char) + 1); print "$shifted_char "; } print "\n";
Key bits explained:
chomp $userinput: This is critical—it strips the newline character that comes with<STDIN>input. Without this, your array would have an extra\nelement at the end, which you don't want.split //, $userinput: Thesplitfunction with//as the delimiter splits the string into every single character, putting each one into the@char_arrayarray.- Character shift logic:
ord($char)gets the ASCII numerical value of the character, we add 1 to shift it up, thenchr()converts that number back to a character. For example, 'a' becomes 'b', 'Z' becomes '[', '9' becomes ':'—this works for all standard ASCII characters.
If you're working with non-ASCII characters (like Unicode), you'd need to adjust the logic to handle Unicode code points instead, but for basic ASCII use cases, this code will work perfectly.
内容的提问来源于stack exchange,提问作者masral
相关产品推荐
相关产品推荐

