Solved

Reading from a text file: problems in removing the terminating character

Posted on 2003-11-12
7
266 Views
Last Modified: 2013-12-25
Hi Experts,

I am having some problem in removing the newline character from the string that is read from a text file.  I have the source code below.  The problem is if I have the username password pair as myname:password it says that the password has 9 characters.  The chomp seems to not remove the newline character.  Please provide me with some advice as to solve the problem.  This problem preventing me from going further with my assignment.

Thanks a lot,

-Thanesh
#!/usr/bin/perl --

use CGI qw( :standard );  

$dtd =

$theUsername = param( "username" );

$thePassword = param( "password" );

open(INFILE, "<password.txt") or die("The database could not be opened.");
$count = 0;
$userVerified = 0;
$passwordVerified = 0;

chomp $thePassword;
while (( $line =<INFILE> ) && (!$userVerified )) {
   
    $count = $count + 1;
    chomp( $line );
    ( $username, $password ) = split( /:/, $line );


   chomp($password);
   chomp($username);

    print( header() );
    print("<br>");
     if ( $theUsername eq $username ) {
           print("User name matches");
             print("<br>");
         $userVerified=1;  
             $len = (length($password));
             print("Length of password is: $len");
              print("<br>");

             $theLen = (length($thePassword));
             print("Lenth of input password is: $theLen");
              print("<br>");

         if ( $thePassword eq $password ) {
                print("Password matches");
                  print("<br>");
                $passwordVerified = 1;
            last;
         }
             print("The password don't match");
     }
}
close(INFILE);


print( header() );

#print( start_html( { dtd => $dtd,title => "First Perl Script" } ) );
print("thePassword: $thePassword");
print("The user name is: $theUsername\n\n");
print("<br>");
print("The user name is verified: $userVerified\n");
print("<br>");
print("The password is verified: $passwordVerified\n");

print("<br>");

print("The password is: $password");
print("<br>");
print("The user name processed: $username");
print("<br>");
print("The count is: $count");
#print( end_html() );




      
0
Comment
Question by:thanesh
7 Comments
 
LVL 1

Author Comment

by:thanesh
ID: 9736839
Hi,
As I investigate it further I found that the chomp does take out the newline character, but there seems to be TWO newline characters.  So, the problem is how to get rid of the second one?
0
 
LVL 1

Author Comment

by:thanesh
ID: 9736881
May be the second one is not a newline character but some other trailing character( non-visible)???
0
 
LVL 2

Accepted Solution

by:
rootkiddy earned 25 total points
ID: 9742239
Brief description of chomp: chomp basically removes what is in $/.  if $/ is empty then it removes all newlines from the string.

Since you are reading the file one line at a time then there shouldn't be a problem with mutliple newlines.  Your last post is probably accurate.  It may be something like a space, tab, or any other variable.  If this is a problem for you then you may consider doing something like

$password =~ s/^([\d\w]+).*/$1/;

Basically take what are valid characters and remember then and ignore everything else.  Note that if you have control over what goes into your file then you may want to make sure information is put in correctly.  Let me know if this helps or you have problems with this.
0
 
LVL 84

Assisted Solution

by:ozo
ozo earned 25 total points
ID: 9757277
\d is included in \w
If  password.txt was created under DOS it may use \r\n to end a line
0
 
LVL 1

Expert Comment

by:robysath
ID: 9761602
I agree with ozo, dos/windows puts a CR/LF (Carriage Return + Line Feed) as a new line.

Unix-like systems look only for LF and I think MACs look for the CR.

That's also why text files will have a larger size on a windows machine, yet smaller on a unix-like system if you transfer them to and fro in ascii mode.
0

Featured Post

3 Use Cases for Connected Systems

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, testing some more, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
AWS CLI issues with Tags 3 77
Control Number of Log Files -Perl 7 74
Powershell  and PSExec = Password failure 5 22
powershell md/mkdir/New-item   -Quiet 10 45
This tutorial will discuss fancy secure registration forms, with AJAX technology support. In this article I assume you already know HTML and some JS. I will write the code using WhizBase Server Pages, so you need to know some basics in WBSP (you mig…
Making a simple AJAX shopping cart Couple years ago I made my first shopping cart, I used iframe and JavaScript, it was very good at that time, there were no sessions or AJAX, I used cookies on clients machine. Today we have more advanced techno…
The viewer will learn how to dynamically set the form action using jQuery.
Video by: Mark
This lesson goes over how to construct ordered and unordered lists and how to create hyperlinks.

803 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question