passing "#" into subroutine

PERL

    Next

  • 1. HOW CAN WE FOUND ALL PEOPLE
    FOR A GOOD TIME CAN WE SEE ALL THING ITS RIGHT BUT WE CANN'T GET THAT . YASIN OMRAN ALI ISMAIL.
  • 2. How do I compare strings non-ascii-betically?
    I am new to Perl but I did a lot of web searching and haven't found an answer to my problem. I have to compare strings that are version numbers. I want to know if a version number is less than or equal to another version number. For example, version 3.2 is less than version 3.16. But when I compare them, 3.16 is considered less. I tried the cmp function and got the same results. I could strip the contents after the '.' and compare them numerically but it becomes difficult if the version number is 3.2.1.5 (for example). Any ideas? Thanks in advance.
  • 3. use/require, and variables
    I have always found that putting "use strict" makes life easier for me. But now, I am trying to use what C programmers call "#include". I have a "main.pl" file, which needs to include another file where values are assigned to a variable. I have tried all combinations of use "includedfile.pl" or require "includedfile.pl" declaring the variable (a hash) in the main file, or the included file declaring the variable before or after the use/require statement declaring the variable as "my" or as "local" but whatever I try, Perl complains about uninitialised or undeclared variables. I have found that if I don't declare my hash at all, and use 'require "includedfile.pl"', it behaves as I want, the values assigned in the included file are usable in the main file. Of course, failing to declare a variable means I can't use 'use strict'. So, I would like to know what the recommended way is of declaring the kind of variable that you get when you just use one without declaring it. This way, I would be able to have my #include working and still have "use strict" there to help me. Nick -- Nick Wedd XXXX@XXXXX.COM

passing "#" into subroutine

Postby ela » Thu, 07 May 2009 01:15:08 GMT

I find $commenttag prints out nothing, what's the problem? I have to escape 
pound....?


open( my $FPM, '<', "inputfile.txt");
$lineM = <$FPM>;

while (&Nextline($lineM, "#", "<Models>")) {
    $lineM = <$FPM>;
}

sub Nextline {
my ($line, $commenttag, $pattern) = @_;
print "C:$commentag"; print $pattern;<STDIN>;

   if ($line =~ /^$commenttag/) {
        return 1;
    }
    if ($line =~ /$pattern/) {
        return 0;
    } else {
        return 1;
    }
}





Re: passing "#" into subroutine

Postby Tad J McClellan » Thu, 07 May 2009 01:35:41 GMT





Your code does not attempt to output $commenttag.

Your code outputs $commentag.

If you had "use strict" turned on, then perl would have found this bug for you.




You have not enabled warnings and strictures.

    use warnings;
    use strict;

This has been pointed out to you before.

You should start doing it.




Did it start working when you escaped pound?

No?

Then that is not the problem.




You should always, yes *always*, check the return value from open():

    open my $FPM, '<', 'inputfile.txt' 
        or die "could not open 'inputfile.txt' $!';




You should not use ampersands on subroutine calls unless you know
what it means, and what it means is what you want. It seldom is.

   while ( Nextline($lineM, '#', '<Models>') ) {




perl would have found the bug for you, if you had only asked it to.


Have you seen the Posting Guidelines that are posted here frequently?


-- 
Tad McClellan
email: perl -le "print scalar reverse qq/moc.noitatibaher\100cmdat/"

Similar Threads:

1.variables not being passed into subroutines

im using several files in this project of mine (a semi intelligent IRC
bot) and i need some of the hashes to be able to be accessed everything
is declared as my, i need them to be passed as hashes for they will be
referenced to for many different users and values. if a code snippet is
needed to be pasted ill do it at another time, thanks i apperciate all
the help! :)

2.FAQ 4.68 Why does passing a subroutine an undefined element in a hash create it?

3.FAQ 4.67 Why does passing a subroutine an undefined element in a hash create it?

This message is one of several periodic postings to comp.lang.perl.misc
intended to make it easier for perl programmers to find answers to
common questions. The core of this message represents an excerpt
from the documentation provided with Perl.

--------------------------------------------------------------------

4.67: Why does passing a subroutine an undefined element in a hash create it?

    If you say something like:

        somefunc($hash{"nonesuch key here"});

    Then that element "autovivifies"; that is, it springs into existence
    whether you store something there or not. That's because functions get
    scalars passed in by reference. If somefunc() modifies $_[0], it has to
    be ready to write it back into the caller's version.

    This has been fixed as of Perl5.004.

    Normally, merely accessing a key's value for a nonexistent key does
    *not* cause that key to be forever there. This is different than awk's
    behavior.



--------------------------------------------------------------------

Documents such as this have been called "Answers to Frequently
Asked Questions" or FAQ for short.  They represent an important
part of the Usenet tradition.  They serve to reduce the volume of
redundant traffic on a news group by providing quality answers to
questions that keep coming up.

If you are some how irritated by seeing these postings you are free
to ignore them or add the sender to your killfile.  If you find
errors or other problems with these postings please send corrections
or comments to the posting email address or to the maintainers as
directed in the perlfaq manual page.

Note that the FAQ text posted by this server may have been modified
from that distributed in the stable Perl release.  It may have been
edited to reflect the additions, changes and corrections provided
by respondents, reviewers, and critics to previous postings of
these FAQ. Complete text of these FAQ are available on request.

The perlfaq manual page contains the following copyright notice.

  AUTHOR AND COPYRIGHT

    Copyright (c) 1997-2002 Tom Christiansen and Nathan
    Torkington, and other contributors as noted. All rights 
    reserved.

This posting is provided in the hope that it will be useful but
does not represent a commitment or contract of any kind on the part
of the contributers, authors or their agents.

4.FAQ 4.67: Why does passing a subroutine an undefined element in a hash create it?

This message is one of several periodic postings to comp.lang.perl.misc
intended to make it easier for perl programmers to find answers to
common questions. The core of this message represents an excerpt
from the documentation provided with Perl.

--------------------------------------------------------------------

4.67: Why does passing a subroutine an undefined element in a hash create it?

    If you say something like:

        somefunc($hash{"nonesuch key here"});

    Then that element "autovivifies"; that is, it springs into existence
    whether you store something there or not. That's because functions get
    scalars passed in by reference. If somefunc() modifies $_[0], it has to
    be ready to write it back into the caller's version.

    This has been fixed as of Perl5.004.

    Normally, merely accessing a key's value for a nonexistent key does
    *not* cause that key to be forever there. This is different than awk's
    behavior.



--------------------------------------------------------------------

Documents such as this have been called "Answers to Frequently
Asked Questions" or FAQ for short.  They represent an important
part of the Usenet tradition.  They serve to reduce the volume of
redundant traffic on a news group by providing quality answers to
questions that keep coming up.

If you are some how irritated by seeing these postings you are free
to ignore them or add the sender to your killfile.  If you find
errors or other problems with these postings please send corrections
or comments to the posting email address or to the maintainers as
directed in the perlfaq manual page.

Note that the FAQ text posted by this server may have been modified
from that distributed in the stable Perl release.  It may have been
edited to reflect the additions, changes and corrections provided
by respondents, reviewers, and critics to previous postings of
these FAQ. Complete text of these FAQ are available on request.

The perlfaq manual page contains the following copyright notice.

  AUTHOR AND COPYRIGHT

    Copyright (c) 1997-2002 Tom Christiansen and Nathan
    Torkington, and other contributors as noted. All rights 
    reserved.

This posting is provided in the hope that it will be useful but
does not represent a commitment or contract of any kind on the part
of the contributers, authors or their agents.

5.How can pass hash to subroutine ?

Hi all,

how can we pass hash to subroutine? and retrieving the hash in
subroutine to print values of hash. 


Thanks,
Siva



6. Help with passing arrays to a Perl subroutine

7. problems passing values to subroutine using LWP::Useragent

8. passing hash data from one subroutine to another using refs



Return to PERL

 

Who is online

Users browsing this forum: No registered users and 92 guest