Difference between revisions of "ClasslistGenerator"

From WeBWorK_wiki
Jump to navigation Jump to search
(Created page with "#!/usr/bin/perl #Classlist generator script # This script takes in a CSV file (such as those generated by Banner) # and creates a lst file which can be used to import student...")
 
Line 1: Line 1:
  +
  +
 
#!/usr/bin/perl
 
#!/usr/bin/perl
   
Line 7: Line 9:
 
#Currently the script assumes that the input file is a CSV file with the
 
#Currently the script assumes that the input file is a CSV file with the
 
#following fields
 
#following fields
## STUDENT_ID,LAST_NAME,FIRST_NAME,MI,STREET1,STREET2,CITY,STATE,ZIP,textbox15,EMAIL,PHONE_1,GENDER,ETHNICITY,PHONE,textbox23,textbox32,HONORS,TERM,SUBJECT,COURSE_NUM,SEC,DEPT,REG_STAT,TITLE,INSTRUCTOR
+
## STUDENT_ID, LAST_NAME, FIRST_NAME, MI, STREET1, STREET2, CITY, STATE, ZIP, textbox15, EMAIL, PHONE_1, GENDER, ETHNICITY, PHONE, textbox23, textbox32, HONORS, TERM, SUBJECT, COURSE_NUM, SEC, DEPT, REG_STAT, TITLE, INSTRUCTOR
   
 
#The first line of the CSV file should contain lables and data entries are
 
#The first line of the CSV file should contain lables and data entries are
#only seperated by tabs. Currently the script strips of the student ID, the
+
#only seperated by commas. Currently the script strips off the student ID, the
#firrst and last names, the section number and email address. The username
+
#first and last names, the section number and email address and uses them to
#for the student is the email address username.
+
# build the lst file. The username for the student is the email address username.
   
 
#Those who are familiar with perl scripts should be able to modify this setup
 
#Those who are familiar with perl scripts should be able to modify this setup
Line 27: Line 29:
 
open (TARGET, ">", $ARGV[1]) or die "Can't open target file.\n";
 
open (TARGET, ">", $ARGV[1]) or die "Can't open target file.\n";
   
#Burn first line with lables and then go through the input file
+
#Burn first line (which has labels) and then go through the input file
 
#line by line
 
#line by line
 
<SOURCE>;
 
<SOURCE>;

Revision as of 14:30, 3 January 2013


  1. !/usr/bin/perl
  1. Classlist generator script
  2. This script takes in a CSV file (such as those generated by Banner)
  3. and creates a lst file which can be used to import students into a class.
  1. Currently the script assumes that the input file is a CSV file with the
  2. following fields
    1. STUDENT_ID, LAST_NAME, FIRST_NAME, MI, STREET1, STREET2, CITY, STATE, ZIP, textbox15, EMAIL, PHONE_1, GENDER, ETHNICITY, PHONE, textbox23, textbox32, HONORS, TERM, SUBJECT, COURSE_NUM, SEC, DEPT, REG_STAT, TITLE, INSTRUCTOR
  1. The first line of the CSV file should contain lables and data entries are
  2. only seperated by commas. Currently the script strips off the student ID, the
  3. first and last names, the section number and email address and uses them to
  4. build the lst file. The username for the student is the email address username.
  1. Those who are familiar with perl scripts should be able to modify this setup
  2. to deal with input files that have a different format.

if (! $#ARGV eq 1) {

   print "Usage: ./classistgenerator <banner csv> <target classlist>\n";
   exit;

}

  1. Open source and target files as provided via command line

open (SOURCE, "<", $ARGV[0]) or die "Can't open source file.\n";

open (TARGET, ">", $ARGV[1]) or die "Can't open target file.\n";

  1. Burn first line (which has labels) and then go through the input file
  2. line by line

<SOURCE>;

while ($line = <SOURCE>) {

   #split line up on commas
   @data = split(/,/,$line);
   #pull off username from email (assumes email is the 10th entry)
   $username = $data[10];
   $username =~ s/@.*//;
   
   #print new csv
   #follows lst format.  assumes that student id is first entry, last name
   # is second entry etc.... 
   print TARGET "$data[0],$data[1],$data[2],c,,$data[21],,$data[10],$username\n";

}

close TARGET or die "Can't close target file.\n";