#!/usr/bin/perl ############################################################################# # search: Search a file for some content # return a json string in the format of an array of objects # [ {"name":"value", "name2":"value2", ...}, {"name":"value", ...} ] ############################################################################# use CGI "param"; $str = param('search') || param('q'); #obtain HTML entry field if (! $str) #if no param is entered { print "Content-type: text/html \n\n"; print "

Please provide username as: URL?q=...

\n"; exit(0); } print "Content-type: text/plain \n"; #text/plain instead of text/html print "\n"; open (FILE, "< /etc/passwd") || print "Cannot open file - $!"; $output = "[ \n"; ####### Search file contents ######## while($line = ) { $line =~ s/"/ /g; #if line contains " replace with space if ($line =~ /$str/i) #if line contains search str { @elements = split(':', $line); $output .= "\t {"; if ($elements[0]) {$output .= "\"userid\":\"$elements[0]\", " ;} if ($elements[2]) {$output .= "\"unixid\":\"$elements[2]\", " ;} if ($elements[4]) {$output .= "\"name\":\"$elements[4]\", " ;} if ($elements[5]) {$output .= "\"homedir\":\"$elements[5]\" " ;} $output .= "}, \n"; } } $output =~ s/\, \n$/ \n/ ; #strip off the last comma $output .= "] \n"; print $output; close(FILE); exit(0);