Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

extra space with /

by malaga (Pilgrim)
on Apr 03, 2001 at 10:28 UTC ( [id://69215]=perlquestion: print w/replies, xml ) Need Help??

malaga has asked for the wisdom of the Perl Monks concerning the following question:

in the code below, $please will be a directory and filename, made up of $subdir and $filetext. When I print $please, there is a space after the last slash in the directory name. if i take out the slash at the end of the directory it goes away. if i move the slash to the beginning of the variable with the filename (would be my $filetext = "/$textr1/$textr2";) i get the space in the same spot - after the slash. what's going on and how do i get rid of the space?
my $subdir = "c:/progra~1/apache~1/apache/cgi-bin/PDG_Cart/"; my $filetxt = "$textr1/$textr2";#this is x.txt my $please = "$subdir$filetxt";

Replies are listed 'Best First'.
Re: extra space with /
by Xxaxx (Monk) on Apr 03, 2001 at 11:28 UTC
    How about changing your one regex just a tad:
    my ( $name, $value ) = ( $line =~ /^\s*(.*?):(.*)$/ );
    to:
    my ( $name, $value ) = ( $line =~ /^\s*(.*?):\s*(.*)$/ );
    This might squeeze any leading spaces from $value. Noting seeing the data file I'm not sure this is necessary. But from the other comments it looks like "poke" around time.

    Claude

      oh my god. thank you. it worked. i didn't use it where i had the regex, but up where i was splitting the $prodtxt. :)
Re: extra space with /
by alfie (Pilgrim) on Apr 03, 2001 at 10:38 UTC
    I simply can't reproduce your problem. You haven't said what data you have stored in $textr1 and $textr2 - so I can just guess that the problem lies in the content of $textr1. Unless you don't give more information what these 2 variables contains I'm afraid but I can't help you...
    --
    Alfie
Re: extra space with /
by malaga (Pilgrim) on Apr 03, 2001 at 10:48 UTC
    here's the whole script.
    #!c:/Perl/bin/Perl -wT use strict;#force us to pre-declare variables use CGI qw/:standard/; print header;#header type is text/html require "c:/progra~1/apache~1/apache/cgi-bin/getmenu.cgi"; & java; my $value = "Angel"; my $lfilename = "products.pdg"; open (FILE, $lfilename) or die "Can't open file!"; my @products; while ( <FILE> ) { if ( /^Begin Product (.*)/i ) # We have a product starting line { my %hash; $hash{ 'prodcode' } = $1; # get the product code. $hash{ 'prodname' } = <FILE>; $hash{ 'prodprice' } = <FILE>; $hash{ 'prodweight' } = <FILE>; my $trackinv = <FILE>; $hash{ 'tracking' } = ( $trackinv =~ /(Yes|No)/i ); my $img = <FILE>; my($img2,$img1)=split(/\|/, $img); $hash{ 'img1'} = $img1; my $prodtxt = <FILE>; my ($text1,$text2)=split(/\\/, $prodtxt); $hash{ 'txt1' } = $text1; $hash{ 'txt2' } = $text2; my $line = <FILE>; last if ( $line =~ /End Product/ ); if ( $line =~ /^\s*Begin Option (.*)$/ ) { my $name = $1; my @option_list; while ( <FILE> ) { last if ( /End Option/ ); push @option_list, $_; } $hash{ $name } = \@option_list; } else { #if there is no option, then stick what's in front of the : +as the hash name, the rest as it's value my ( $name, $value ) = ( $line =~ /^\s*(.*?):(.*)$/ ); $hash{ $name } = $value; } push @products, \%hash; } } close (FILE); print "<HTML>"; print "<TABLE ALIGN\= CENTER>"; print "<TR>"; print "<TD>"; foreach my $ref ( @products ) { if ($ref->{prodname} =~ ($value)) { print "<B>"; print $ref->{prodname}; print "</B>"; print "<br>"; print "<IMG SRC\=\"$ref->{img1}\">"; print "<br>"; print $ref->{prodprice}; print "<br>"; print "<a href\=\"shopper\.exe\?preadd\=action\&amp\;key\=$ref +->{prodcode}\">", "Add to Cart", "</a>"; #print $ref->{prodtext}; print "<br>"; my $textr1 = "$ref->{txt1}"; my $textr2 = "$ref->{txt2}"; my $subdir = "c:/progra~1/apache~1/apache/cgi-bin/PDG_Cart"; my $filetxt = "/$textr1/$textr2"; my $please = "$subdir$filetxt"; print "$please"; open (FILE, "$please") or die "Can't open file!"; print while <FILE>; close FILE; } } print "</TD>"; print "</TR>"; print "</TABLE>"; print "<br>"; print "<TABLE>";
      Add the print debug line I mentioned where you print $please.

      Also, the quotes in my $textr2 = "$ref->{txt2}"; are useless. In fact, why not just do my $filetxt ="/$ref->{txt1}/$ref->{txt2}";? You are also killing yourself to quote hash indexes when you don't need to.

      UPDATE: The more I look at your code, the more I'm convinced you have a space in front of one line in your datafile...

      --
      $you = new YOU;
      honk() if $you->love(perl)

      First of all: Use perlfunc:chomp on your input to get rid of the trailing newline. On the other hand, that shouldn't be the problem you currently have.

      It seems to me that you might have the space in the file you read, with a quick lookthrough I don't see the problem in the code (or, I might just be distracted ;). I personally would use the following for asigning the txt1 and txt2:

      my $textr1 = $ref->{'txt1'}; my $textr2 = $ref->{'txt2'};
      No need to put the whole ref in quotes, and I think it's cleaner if you put the key in quotes.
      --
      Alfie
        yeah, i'll keep working on it. i don't think it's the file i'm reading either, because if i just take that one slash out, there is no extra space. and if i open the file and look at it, there is no space. it's weird. but true, so i better figure it out.
Re: extra space with /
by extremely (Priest) on Apr 03, 2001 at 10:33 UTC
    Did you retype this or cut'n'paste? As is, that works fine for me. Did you get DOS'ed and confused and 'backwhack' (\ vs /) something like I always do under Windows?

    --
    $you = new YOU;
    honk() if $you->love(perl)

      yes, the slashes are printing out correctly. the path is perfect except that little space.
        Add a debuging print line that does: print join('#','\n',$var1,$var2,$var3,$etc,"\n"); and look for spaces in the text.

        --
        $you = new YOU;
        honk() if $you->love(perl)

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://69215]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others imbibing at the Monastery: (6)
As of 2024-03-28 20:13 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found