Kevin Pfeiffer wrote:

> In article <[EMAIL PROTECTED]>, John W. Krahn wrote:
>
> > "R. Joseph Newton" wrote:
> >>
> >> Kevin Pfeiffer wrote:
> >>
> >> > I'm looking at HTML::TokeParser. It expects a scalar with a filename or
> >> > a reference to a scalar containing the data to parse.
> >> >
> >> > This works fine:
> >> >
> >> > my $html;
> >> > if (@ARGV) {                              # get filename for TokeParser
> >> >   $html = shift;
> >> > } else {
> >> >   my @html = <>;
> >>
> >> Where is the diamond operator here supposed to be filled from?
> >
> > <> treats the elements of @ARGV as file names and opens them in order
> > and returns their contents but if @ARGV is empty it returns the contents
> > of STDIN.
>
> This is what I'm stuck on - is there a way to determine if STDIN is
> getting/is going to get/has gotten any contents?
>
> I thought I would just check with "unless @html...", but the script never
> gets that far, it's waiting for <STDIN> which never arrives.
>
> $ ./myscript
>
> I just thought that if @ARGV is empty and nothing is being piped to the
> script that I should be able to print a usage message.

Not the provlem at all, Kevin.  The problem is those damned extra operators, in
this case the reference-to operator '\' preceding your join statement.  Itr
should be one or the other, either join or take a reference.  Doing both just
toasts the code:

Greetings! E:\d_drive\perlStuff>perl -w
my $html;
if (@ARGV) {                              # get filename for TokeParser
  $html = shift;
} else {
  my @html = <>;
  $html = \(join '', @html);              # pass scalar ref to module
}
open IN, $html;
print "$_" while (<IN>);
^Z
FileTest.html
^Z
readline() on closed filehandle IN at - line 9.

Greetings! E:\d_drive\perlStuff>perl -w
my $html;
if (@ARGV) {                              # get filename for TokeParser
  $html = shift;
} else {
  my @html = <>;
  $html = \(join '', @html);              # pass scalar ref to module
}
chomp $html;
open IN, $html;
print "$_" while (<IN>);
^Z
FileTest.html
^Z
readline() on closed filehandle IN at - line 10.

[snip--about five minor adjustments]

Greetings! E:\d_drive\perlStuff>perl -w
my $html;
if (@ARGV) {                              # get filename for TokeParser
  $html = shift;
} else {
  my @html = <>;
  print "$_\n" for (@html);
  $html = (join '', @html);              # pass [either] scalar [or] ref [to
array] to module
  print "$html\n";
}
chomp $html;
print "$html\n";
open IN, $html;
print "$_" while (<IN>);
^Z
FileTest.html
^Z
FileTest.html

FileTest.html

FileTest.html
<html>
<head>
  <title> File Test </title>
</head>
<body>
  <form method="POST" action="FileTest.cgi" enctype="multipart/form-data">
    <input name="up_file" type="file" value="my_test.txt">
    <input type="submit">
  </form>
</html>





Greetings! E:\d_drive\perlStuff>

Joseph


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to