On Wed, 2003-12-31 at 13:27, James Edward Gray II wrote:
On Dec 31, 2003, at 11:57 AM, Eric Walker wrote:
> OK, some how my $_ variable is out of sync with my <> operator.
> if I print out $_ I get line a of my file and if I do a my $test =
> <GIN>, and print out $test I get a different line that is more than the
> next line away. example.
>
> I am the best
> you are the best
> we are the best
> they are the best.
>
> print $_ "I am the best"
> $test = <GIN>;
> print $test "they are the best"
>
> any suggestion on how to resync it?
I think you are pretty confused about what <> and $_ mean.
<> is the input operator, it reads one input record (often a line) each
time it is used. You're examples show it with a file handle inside of
it, which is where the record/line will be read from. Example:
<FILE>; # read first line of file, and do nothing with it
my $line = <FILE>; # read next line of file and store it in $line
$_ is Perl's default variable. That means that many built-ins and some
operators work with the contents of $_ unless they are told to do
otherwise. Example:
print; # prints to value of $_
print "Bark!\n" if m/\bDog\b/; # prints Bark! if $_ contains the word
Dog
foreach (@name) { # loops over @names, putting one at a time in
$_
# ... use $_ here to access current name
}
chomp; # removes input record separator from
$_
Now where I think you are getting confused is the typical Perl idiom:
while (<FILE>) {
}
That's actually a shorthand way to write:
while ( defined( $_ = <FILE> ) ) {
}
Notice that the record/line read from FILE there is assigned to $_,
making it convenient to work with the current line.
However, outside this special case $_ and <> are not related.
Something like:
<FILE>; # does NOT assign to $_, line is discarded
my $line = <FILE>; # assigns to $line, $_ is untouched
Now if you want to put something in $_, you can of course:
$_ = <FILE>; # assigns next record/line to $_
Hope that clears things up for you.
James
Ok thanks for that info. Now is there a way to move back up the file
and get previous lines or do you have to store them in a variable and
use them later.
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>