-
Notifications
You must be signed in to change notification settings - Fork 0
/
parsecsv.pl
executable file
·40 lines (37 loc) · 1.68 KB
/
parsecsv.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/usr/bin/perl
# This simple script parses a CSV file formatted into columns id, severity, title, description, fix into perl modules
use strict;
use warnings;
use Text::CSV;
my $csv = Text::CSV->new({ sep_char => ',', binary => 1});
my $filename = $ARGV[0] or die "Need to get CSV file on the command line\n";
my $file;
open($file, '<', $filename) or die "Could not open '$file' $!\n";
while (my $row = $csv->getline($file)) {
my ($id, $severity, $title, $description, $fix) = @{$row};
$title =~ s/'/\\'/g;
$description =~ s/'/\\'/g;
$fix =~ s/'/\\'/g;
open(my $idfile, '>', "$id.pm");
printf($idfile "my \$id = '%s';\n", $id);
printf($idfile "my \$title = '%s';\n", $title);
printf($idfile "my \$severity = '%s';\n", $severity);
printf($idfile "my \$description = '%s';\n", $description);
printf($idfile "my \$fix = '%s';\n", $fix);
printf($idfile "my \$autotest = 0;\n");
printf($idfile "my \$autofix = 0;\n");
printf($idfile "\n");
printf($idfile "use lib 'lib';\n");
printf($idfile "use STIG;\n");
printf($idfile "\n");
printf($idfile "sub getId()\n{\n return \$id;\n}\n\n");
printf($idfile "sub getTitle()\n{\n return \$title;\n}\n\n");
printf($idfile "sub getSeverity()\n{\n return \$severity;\n}\n\n");
printf($idfile "sub getDescription()\n{\n return \$description;\n}\n\n");
printf($idfile "sub getFix()\n{\n return \$fix;\n}\n\n");
printf($idfile "sub canTest()\n{\n return \$autotest;\n}\n\n");
printf($idfile "sub canFix()\n{\n return \$autofix;\n}\n\n");
printf($idfile "sub test()\n{\n return 0;\n}\n\n");
printf($idfile "sub fix()\n{\n return 0;\n}\n");
close($idfile);
}