I personally don't think that Perl is a good first language because it is huge with a lot of functions and for many things there can be multiple syntax's that work (I think for a beginner, this "many ways to do something" sometimes get in the way) - Perl borrows from many languages.
The traditional way to start would be with a much "smaller" language like C. Although nowadays many schools favor learning an OO (object oriented) language like Java first.
The fundamental issue is how to "think algorithmically" - how to break a complex problem down into steps that can be implemented in terms that the computer can understand. And then how to code each step. The "interfaces" between each section (step) of the program are very important.
Programming is an art that is based upon science. The science part concerns things like how to sort things based upon the minimum number of comparisons. There are well known data structures (how to organize data) that allow us to access data efficiently.
There are many folks on this forum who have spent most of their lives learning about software and how to write it.
My question for you would be: what level of proficiency do you want to achieve? What kinds of programs do you want to write? What would they do?
I would recommend that you register as a user (its free) and then you can send me or others messages amongst other benefits.
Anyway, tell use what you want to use software to achieve? In terms of functionality that would be useful to you.
You can get a lot of help here as long as the forum believes that you are trying and we aren't doing your class homework for you.
As far as short books, I would recommend K&R (Kernighan and Ritchie) Programming in C. The main thing to understand are basic loop structures and the idea of a "data type", integer vs a floating point. This is a "classic". But I will admit that perhaps it is not the best place for you to start depending upon what you want to accomplish.
I would recommend that you give us some guidance as to what you want to accomplish.