The Perl script that contains a Unix command to grep the ethernet NICs cannot be executed within the script! I have tried "qx" , $var and "system" but it does not seem to work!
The codes:
#!/usr/bin/perl
use warnings;
use strict;
use Term::ANSIColor;
print "\nYou are now in Showing Ethernet Cards!\n\n";
print "**************************\n";
print "|Ethernet Cards Available|\n";
print "**************************\n";
print "\nThe Ethernet Cards that are available are: ";
my $ex = system ('ifconfig | awk '{print $1}' | egrep "eth|lo"');
print "$ex";
When executed the error "syntax error at ./ethercards.pl line 14, near "'ifconfig | awk '{" Execution of ./ethercards.pl aborted due to compilation errors." shows up in the terminal.
Does anyone have any thoughts on this? Thanks!
You are using the
'
as the string delimiter but the'
also shows up in the string.You then mistake the return value of system as the output of the command. When a command doesn't do what you expect, read its docs.
You're also doing a bit too much work on the command line. You're already in Perl, so avoid creating extra processes when you don't need to:
If you only want some interfaces, throw a
grep
in there:I like to use the full path to executables so I know which one I'm getting. :)
Syntax highlighting also suggests that your system string is broken. Try
If you need the output of your program, then write: