#!/usr/bin/perl -w # Script for task management. # Usage : # tasklist to list tasks # tasklist -a to add a new task # tasklist -r task-numbers to remove tasks from list ################################################################################## ### You have to change the above path depending upon the output of `which perl` ## ### Author: Shraddha Kulkarni ## ################################################################################## use strict; use Env; # this is used to import system environment variables into %ENV hash used later in this script Env::import(); my @tasks; my %tasks; my $separator="!\@#\$^&*"; my $escaped_separator = "!@#\\\$\\\^&\\\*"; unless( -f $ENV{'HOME'}."/.tasklist"){ open NEWTASK,">".$ENV{'HOME'}."/.tasklist"; close NEWTASK; print "New task-list created ..\n. Filename is ~/.tasklist\n\n To add new tasks, use command 'tasklist -a'\n\n"; } open TASKS,$ENV{'HOME'}."/.tasklist"; while(){ #s/$escaped_separator/ - /g; if(/^(\d+)$escaped_separator(.*)$/){ $tasks{$1}=$2; push @tasks,$2; } } close TASKS; #### just read the task-list #### if(@ARGV == 0){ foreach my $k (keys %tasks){ print "$k - ".$tasks{$k}."\n"; } } else{ ## arguments are present ... go in the else part to process ### remove from the task-list #### if($ARGV[0] eq '-r'){ for (my $i=1;$i<@ARGV;$i++){ delete $tasks{$ARGV[$i]}; } write_list(); } ### add tasks to the list #### if($ARGV[0] eq '-a'){ my $task_num = unused_tasknum(); print "Task: "; my $task=; $tasks{$task_num}=$task; write_list(); } ### help menu !! ### if($ARGV[0] eq '-h'){ print "USAGE\n-----\nTo add a task: tasklist -a\nTo remove tasks from list: tasklist -r space-separated-list-of-task-numbers\nThis help menu: tasklist -h\n"; } } ############# sub unused_tasknum{ my $i=1; while(1){ if ($tasks{$i}){ $i++; } else {return $i;} } } sub write_list{ open ADD,">".$ENV{'HOME'}."/.tasklist"; foreach my $k(keys %tasks){ print ADD "$k$separator$tasks{$k}\n"; } close ADD; }