Christopher wrote:
I may be way off here Christopher but I don't think readline wants to see a file handle, I think it wants to see a typeglob.Here is some code I've written:
#!/bin/perl -w use strict;
sub choose_vi { print "Use vi?\n"; print "Y/y for yes. Any other key quits: "; chomp(my $answer = <STDIN>); if ($answer =~ /^[yY]$/) { print "Enter line number? (Y for yes):"; chomp(my $answer = <STDIN>); print "\n"; if ($answer =~ /^[yY]$/) { print "Enter line number: "; chomp(my $line_number = <STDIN>); system "vi", "+".$line_number, $ARGV[0], "caught_errors"; } else { system "vi", $ARGV[0], "caught_errors"; } } else { print "Goodbye!\n"; } }
sub read_ce { print "Errrors:\n"; open CAUGHT, "caught_errors" or die "Can't open file: $!"; my @lines = readline CAUGHT; my $number_of_lines = @lines; for (my $i = 0; $i < $number_of_lines; $i++) { print $lines[$i]."\n"; } }
my $number_of_args = @ARGV;
open STDERR, ">./caught_errors" or die "Can't create caught_errors: $!";
if ($number_of_args == 0) { print "Not enough arguments!\n"; print "Usage: ./cedit somefile.C++\n"; print "Usage (optional): ./cedit somefile.C++ outputfile\n"; } elsif ($number_of_args == 1) { system "g++", $ARGV[0]; &read_ce; &choose_vi; } elsif ($number_of_args == 2) { system "g++", $ARGV[0], "-o", $ARGV[1]; &read_ce; &choose_vi; } else { print "Too many arguments!\n"; print "Usage: ./cedit somefile.C++\n"; print "Usage (optional): ./cedit somefile.C++ outputfile\n"; }
Basically, I'm trying to automate g++. This script works, but when I run it, I get the following error message:
Name main::CAUGHT used only once: possible typo at /home/Christopher Spears/C++_code/tools/cedit line 26.
My guess is that the error is in my read_ce subroutine. Other than that, I'm not sure what is wrong.
from perldoc -f readline '$line = readline(*STDIN);'
hope it helps.
-Matthew
-- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>