On 21 Mar 2003 at 20:32, Matthew Stapleton wrote: > Hello, > > I am learning Perl and having some fun with it. In a script I am writing > I am wanting to read a line of a file and then extract a digit from the > beginning of the line. A typical line looks something like this: > > 100. text text text > > So I am using a file handle to open the file and read the lines on by one > with a while loop. > > while (<TXT>){} > > That part is pretty straight forward. Each line is then given to $_ > > But how do I get just the digit at the beginning of the line out of $_ ? > I thought about adding zero to $_ and then passing this to another > variable but this does not seem to work. > > Can someone help me? > > Thanks, > > > Matthew Stapleton >
Welcome to Perl, Matthew. You can (and in this case probably should) use a regular expression; within your 'loop', with your line in $_, try: while (<TXT>){ chomp; # strips NL char at end of line next unless $_; # skips if empty line my ($nbr) = /^(\d)/; next unless $nbr; # line did not begin w/digit print "$nbr\n"; # show result } The meat of the above is the regex: /^(\d)/; Where: / is the regex delimiter ^ says match at start of variable, $_ ( 'capture' until ) \d any digit 0-9 ) end of 'capture' / end of regex The (...) capture feature allows you to capture matched parts of a regex; by default, the first captured is put into special variable $1, the second into $2, etc; if you call the regex in list context (assigning the result to a list or array), the captures are put into that list/ array. That's why I wrote ($nbr) above - list context. Now, if the first character of the line is not a digit 0-9, nothing will be captured and $nbr will be undefined. Otherwise, $nbr contains the first digit of the line. If you would rather capture the entire number that starts the line, use: my ($nbr) = /^(\d+)/; \d+ says one or more (+) digits. Study your regexs! :) Aloha => Beau; PS: untested - you have to find my typos... -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]